Битовая операция в C / C ++ - PullRequest
0 голосов
/ 15 марта 2011

Когда мы говорим о битовой операции на C или C ++. Бит начинается с бит 0 или бит 1? Какой из них имеет больше смысла? Как я знаю, бит может принимать одно из двух значений: 1 или 0.

Ответы [ 5 ]

7 голосов
/ 15 марта 2011

Как правило, бит идентификаторы начинаются с 0 с наименьшего значимого конца, например со следующего октета:

+----+----+----+----+----+----+----+----+
| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |
+----+----+----+----+----+----+----+----+
  80   40   20   10   08   04   02   01    <-- hex value

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

Для объяснения побитовогооператоры, см. здесь .

Например, если вы хотите узнать, был ли b3 установлен в C:

b3 = value & 0x08; // non-zero if set.

Аналогично, настройка b0 и очистка b7можно сделать с помощью:

value = (value | 0x01) & 0x7f; // or with 0000-0001, and with 0111-1111.
2 голосов
/ 15 марта 2011

Мы всегда начинаем с бита 0, который почти всегда является младшим значащим битом.

1 голос
/ 15 марта 2011

это не битовые операции, а битовые операции

Побитовая операция выполняется для всех битов переменной, например,

1 XOR 2

для целых чисел среднего размера 2 байта

0000 0000 0000 0001 XOR 0000 0000 0000 0010

1 голос
/ 15 марта 2011

По договоренности индексация битов начинается с 0, например, для такого выражения, как (x >> i) & 1.

0 голосов
/ 15 марта 2011

Битовые операции используют все биты в операндах.

...