2025-11-08 06:17:05
给一个bit赋值需要用到位运算符,比如&、|、^这些符号。比如,如果要把变量b的某个bit赋值给a,可以用a = b & 1。这里&是按位与,1的二进制是000...0001,这样a的最低位就会等于b的最低位。如果b的某个bit是1,那么a对应位置就是1;如果b是0,a对应位置就是0。比如把b的第二个bit赋值给a,可以写成a = (b >> 1) & 1,这样先右移一位,再按位与1,就能取到第二个bit的值。
为什么这样操作呢?因为C语言里的bit操作需要通过位运算符来精确控制单个二进制位。比如当b是3(二进制0011)时,b & 1的结果是1(0001),而b & 2(0010)的结果是2(0010)。这里1和2的二进制表示中,只有对应位是1,其他位都是0。所以通过移位操作调整bit位置后,再用&1就能提取出目标bit。比如当b是5(0101)时,(b >> 2) & 1的结果是1,说明第三个bit是1。这种操作比直接赋值更高效,因为位运算速度比整数运算快很多。比如在处理1000万次操作时,位运算比整数运算快10倍以上(参考《C Primer Plus》第5章数据类型)。
本题链接: