当我们用C或C ++谈论位操作时。 位是从bit0还是bit1开始的?哪一个更有意义? 据我所知,有点可以采用两个值中的任何一个:1或0。
答案 0 :(得分:7)
通常,位标识符从最低端的0开始,例如使用以下八位字节:
+----+----+----+----+----+----+----+----+
| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |
+----+----+----+----+----+----+----+----+
80 40 20 10 08 04 02 01 <-- hex value
虽然有点可以采用0
或1
值但不限制其标识符,其范围可以为零最多比特数减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)
位操作使用操作数中的所有位。