Основные побитовые операторы

Побитовый оператор — это оператор, используемый для выполнения побитовых операций с битовыми шаблонами или двоичными числами, которые включают манипулирование отдельными битами.

Есть несколько основных побитовых операторов, которые нам нужно знать.

  1. Побитовое И (&)
  2. Побитовое ИЛИ (|)
  3. Побитовое НЕ (~)
  4. Побитовое исключающее ИЛИ (^)
  5. Сдвиг влево (‹‹)
  6. Сдвиг вправо (››)

Теперь давайте подробно рассмотрим каждый из них

1. Побитовое И (&)

Побитовое И является бинарным оператором, что означает, что для манипулирования ими и возврата результата требуется два операнда.

Побитовый оператор И (&) возвращает 1 в каждой битовой позиции, для которой соответствующие биты обоих операндов равны 1 и 0, если любой из битов равен 0.

Как видно из таблицы истинности, И (&) возвращает 1 только в том случае, если оба операнда равны 1, и возвращает 0, если один из операндов равен 0.

Из приведенного выше кода ясно видно, что каждый бит обоих операндов выполняет операцию И (&) для получения результирующего бита.

2. Побитовое ИЛИ (|)

Побитовое ИЛИ является бинарным оператором, что означает, что для управления им и возврата результата требуется два операнда.

В побитовом операторе ИЛИ, если оба бита равны 0, тогда результат этого бита равен0, в противном случае результат 1 .

Как видно из таблицы истинности, операция ИЛИ (|) возвращает 1, если любой из операндов равен 1,и возвращает 0, если оба операнда равны 0.

В приведенном выше коде каждый бит обоих операндов выполняет операцию ИЛИ (|) для получения результирующего бита.

3. Побитовое НЕ (~)

Побитовое НЕ является унарным оператором, что означает, что для получения результата требуется только один операнд.

В побитовом операторе НЕ, если бит равен 0, тогда результат 1, а если бит равен 1, тогда результат 0. В основном биты инвертируются.

Как видно из таблицы истинности, НЕ (~) инвертирует биты и возвращает 1, если операнд 0 и возвращает 0, если операнд равен 1. Он меняет каждый бит на противоположный.

Если вы не понимаете, как мы получили десятичное «-13» из двоичного «11110011», помните, что двоичное число находится в форме дополнения до 2 со знаком.

Итак, чтобы преобразовать его в двоичный файл:

  1. Крайний левый бит равен 1, что указывает на то, что он отрицательный (1=отрицательный, 0=положительный)
  2. Поскольку оно отрицательное, мы преобразуем его в форму дополнения до 1, вычитая 1. 11110011 -1 = 11110010
  3. Теперь мы получаем положительное беззнаковое представление, переворачивая все биты.
    !(11110010) = 00001101
  4. Теперь мы получаем число 13, и если мы добавим к нему знак минус, мы получим -13.

Вот как мы конвертируем знаковое дополнение 2 в двоичное.

4. Побитовое исключающее ИЛИ (^)

Побитовое XOR является бинарным оператором, что означает, что для управления им и возврата результата требуется два операнда.

В побитовом операторе XOR, если оба бита одинаковы, тогда результатом этого бита является 0 или иначе если оба бита различны, результатом будет 1 .

Как видно из таблицы истинности, если оба бита одинаковы, например, оба 1 или оба 0, тогда результат равен 0, а если оба бита различны, результат равен 1.

В приведенном выше коде каждый бит обоих операндов выполняет операцию XOR(^) для получения результирующего бита.

Следующие 2 операции немного отличаются от вышеперечисленных. Концепция довольно проста, вся идея заключается в перемещении битов влево или вправо. Давайте рассмотрим операторы побитового сдвига влево и вправо и их работу.

5. Побитовый сдвиг влево (‹‹)

Для этого необходимы два операнда, первый операнд — это число, над которым мы выполняем сдвиг влево, а второй операнд определяет количество мест для сдвига.

«4 ‹‹ 2»означает, что 4 сдвинуто влево на 2 позиции. По сути, он перемещает биты влево и добавляет нули справа. В этом случае биты 4 перемещаются влево на 2 места и 2 справа добавляются нули. Биты, которые переполняются, игнорируются. Последний бит в направлении сдвига, в данном случае самый левый бит теряется каждый раз, когда мы делаем сдвиг влево.

Как видно из приведенного выше кода, при сдвиге влево на 2 двоичный код 4 сдвигается 2места слева и нули добавляются справа.

По существу, за исключением случая потери битов со значением 1слева, оно удваивает число каждый раз, когда мы сдвиг влево.

6. Побитовый сдвиг вправо (››)

Для этого необходимы два операнда, первый операнд — это число, над которым мы выполняем сдвиг вправо, а второй операнд определяет количество мест для сдвига.

«4 ›› 2»означает, что 4 сдвинуто вправо на 2 позиции. По сути, он перемещает биты вправо и добавляет нули слева. В этом случае биты 4 сдвигаются вправо на 2 места и 2 слева добавляются нули. Биты, которые переполняются, игнорируются. Последний бит в направлении сдвига, в этом случае самый правый бит теряется каждый раз, когда мы делаем сдвиг вправо.

Как видно из приведенного выше кода, при сдвиге вправо на 2 двоичный код 4 сдвигается 2знаки справа и нули добавляются слева.

По сути, сдвиг вправо — это деление на два и округление в меньшую сторону.

Я надеюсь, что это даст вам общее представление о битовых манипуляциях и побитовых операторах. Битовая манипуляция — это метод, используемый в различных задачах для получения решения оптимизированным способом. Это быстро и эффективно.

Если вы нашли это полезным, обязательно поставьте лайк и поделитесь. Вам нравятся битовые манипуляции? Дай мне знать в комментариях!