C / C ++中的位操作

时间:2011-03-15 02:12:07

标签: c++ c bit

当我们用C或C ++谈论位操作时。 位是从bit0还是bit1开始的?哪一个更有意义? 据我所知,有点可以采用两个值中的任何一个:1或0。

5 个答案:

答案 0 :(得分:7)

通常,位标识符从最低端的0开始,例如使用以下八位字节:

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

虽然有点可以采用01 但不限制其标识符,其范围可以为零最多比特数减1。

有关按位运算符的说明,请参阅here

例如,如果您想知道是否在C中设置了b3

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

同样,设置b0和清除b7可以通过以下方式完成:

value = (value | 0x01) & 0x7f; // or with 0000-0001, and with 0111-1111.

答案 1 :(得分:2)

我们总是从第0位开始,这几乎总是最不重要的位。

答案 2 :(得分:1)

按照惯例,位索引从0开始,例如表达式(x >> i) & 1

答案 3 :(得分:1)

它不是位操作,而是按位操作

对变量的所有位执行按位运算,例如

1 XOR 2

表示大小为2字节的整数

<00> 0000 0000 0000 0001 XOR 0000 0000 0000 0010

答案 4 :(得分:0)

位操作使用操作数中的所有位。