Подтвердить что ты не робот

Понимание поведения одного оператора амперсанда (&) для целых чисел

Я понимаю, что один оператор амперсанда обычно используется для операции "поразрядного И". Однако может ли кто-нибудь помочь объяснить интересные результаты, которые вы получите, когда используете его для сравнения двух чисел?

Например:

(6 & 2) = 2
(10 & 5) = 0
(20 & 25) = 16
(123 & 20) = 16

Кажется, нет никакой логической связи между этими результатами - я что-то упускаю? Онлайн-документация, по-видимому, относится к сравнению булевых или одиночных бит.

4b9b3361

Ответ 1

Сравните двоичные представления каждого из них.

    110 &     010 =     010
   1010 &    0101 =    0000
  10100 &   11001 =   10000
1111011 & 0010100 = 0010000

В каждом случае цифра равна 1 в результате только тогда, когда она равна 1 как левой, так и правой стороне ввода.

Ответ 2

Вам нужно преобразовать свои номера в двоичное представление, а затем вы увидите, что связь между результатами, такими как 6 и 2 = 2, фактически равна 110 и 010 = 010 и т.д. 10 и 5 равно 1010 и 0101 = 0000

Ответ 3

Двоичный и операция выполняется по целым числам, представленным в двоичном формате. Например

110  (6)
010  (2)
--------
010  (2)

Ответ 4

6     = 0110
2     = 0010 
6 & 2 = 0010

20      = 10100
25      = 11001
20 & 25 = 10000

(похоже, что вы ошибаетесь для этого)

Etc...

Ответ 5

Внутри, целые числа хранятся в двоичном формате. Я настоятельно рекомендую вам прочитать об этом. Знание о поразрядном представлении чисел очень важно.

При этом поразрядное сравнение сравнивает биты параметров:

Decimal: 6    &    2 = 2
Binary:  0110 & 0010 = 0010

Ответ 6

Побитовое И выполняет именно это: оно выполняет операцию И на битах.

Итак, чтобы предвидеть результат, вам нужно посмотреть на биты, а не на цифры.

И дает вам 1, только если там 1 в обоих числах в том же положении:

6(110) & 2(010) =  2(010)
10(1010) & 5(0101) = 0(0000)

Побитовое ИЛИ даст вам 1, если 1 в любом номере в той же позиции:

6(110) | 2(010) =  6(110)
10(1010) | 5(0101) = 15(1111)

Ответ 7

Bitwize AND сопоставляет биты в двоичной нотации один за другим, а результат - это биты, которые являются comon между двумя числами.

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

Например 6 = 110 двоичных

110 представляет 1x4 + 1x2 + 0x1 = 6.

2, то 0x4 + 1x2 + 0x1 = 2.

Bitwize и сохраняет только позиции, в которых оба номера имеют заданное положение, в этом случае бит для 2 и результат равен 2.

Каждый дополнительный бит удваивает последнее, так что 4-битное число использует множители 8, 4, 2, 1 и может предвидеть все числа от 0 до 15 (сумма умножителей.)