在C语言中,0x01和0x80代表的是什么位运算?
0x01是最低有效位设置,因此十进制值为1。
0x80是8位字节集的最高有效位。如果它存储在有符号字符中(在使用2补码记法的机器上-正如您可能遇到的大多数机器都会遇到的那样),它是最负的值(十进制-128);在无符号字符中,它是十进制+128。
另一个成为第二特性的模式是设置了所有位的0xFF;对于有符号字符是decimal -1,对于无符号字符是255。当然,有0x00或0,没有设置任何位。
循环在第一个周期执行的操作是检查是否设置了LSB (最低有效位),如果设置了,则在结果中设置MSB (最高有效位)。在下一个周期中,它检查下一个到LSB,并将下一个设置为MSB,依此类推。
代码语言:javascript复制| MSB | | | | | | | LSB |
| 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | Input
| 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | Output
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0x80
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0x01
| 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | (0x80 >> 1)
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | (0x01 << 1)