当我们用C或C++谈论Bit Operation时.位是从bit0还是bit1开始的?哪一个更有意义?据我所知,有点可以采用两个值中的任何一个:1或0.
通常,位标识符从最低端的0开始,例如使用以下八位字节:
+----+----+----+----+----+----+----+----+
| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |
+----+----+----+----+----+----+----+----+
80 40 20 10 08 04 02 01 <-- hex value
Run Code Online (Sandbox Code Playgroud)
虽然一个位可以采用a 0或1 值,但不限制它们的标识符,其范围可以从零到位数减1.
有关按位运算符的说明,请参见此处.
例如,如果您想知道是否b3在C中设置:
b3 = value & 0x08; // non-zero if set.
Run Code Online (Sandbox Code Playgroud)
同样,设置b0和清除b7可以通过以下方式完成:
value = (value | 0x01) & 0x7f; // or with 0000-0001, and with 0111-1111.
Run Code Online (Sandbox Code Playgroud)