freeCodeCamp/guide/russian/miscellaneous/bitwise-operators/index.md

47 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: Bitwise Operators
localeTitle: Побитовые операторы
---
`<<` , `>>` , `&` , `|` , `~` , и `^` - поразрядные операторы, которые работают с одним или несколькими битовыми шаблонами или двоичными числами на уровне их отдельных битов.
## И оператор
`x & y`
Делает «поразрядным и». Каждый бит выхода равен 1, если соответствующий бит x И для y равен 1, в противном случае - 0.
## Оператор OR
`x | y`
«Побитовое» или «. Каждый бит вывода равен 0, если соответствующий бит x И для y равен 0, в противном случае это 1.
## Оператор комплемента
`~ x`
Возвращает дополнение x - номер, который вы получаете, переключая каждый 1 для 0 и каждый 0 для 1. Это то же самое, что и -x - 1.
## Оператор XOR
`x ^ y`
«Побитовое исключение или». Каждый бит вывода совпадает с соответствующим битом в x, если этот бит в y равен 0, и это дополнение к биту в x, если этот бит в y равен 1.
## Оператор арифметического сдвига слева
`x << y`
Возвращает x с битами, сдвинутыми влево на y местами (и новые биты в правой части - это нули). Это то же самое, что умножение x на 2 \*\* y, сохраняя знак числа. Большинство компиляторов выдает предупреждение при смене с помощью count> = sizeof (type). Обычно вы получаете 0, когда вы это делаете.
## Оператор арифметического сдвига справа
`x >> y`
Возвращает x с битами, сдвинутыми вправо на y местами. Это то же самое, что и деление x на 2 \*\* y для целых чисел без знака. Правильный сдвиг отрицательного числа со знаком имеет поведение, определяемое реализацией. Большинство компиляторов выдает предупреждение при смене с помощью count> = sizeof (type). Смещение по правому краю может заполнить «пустые» биты оригинальным самым значительным битом (т. Е. Выполнить расширение знака) или может сдвинуться в нулях, в зависимости от платформы и / или компилятора.
## Оператор логического сдвига справа
`x >>> y`
Возвращает x с битами, сдвинутыми вправо на y местами. В отличие от арифметического сдвига, логические сдвиги не выдают знак. Например: -2, представленный в 8 бит, будет 11111110 (потому что самый старший бит имеет отрицательный вес). Смещение его вправо одним битом с использованием арифметического сдвига даст вам 11111111, или -1. Однако логическая сдвиг вправо не имеет значения, что значение может представлять собой число; он просто перемещает все вправо и заполняется слева с помощью 0s. Смещение нашего правого правого бита с использованием логического сдвига дало бы 01111111. Этот оператор не обязательно присутствует на всех языках.