试图测试字节的第1位是否转过?移位

时间:2019-03-24 03:18:25

标签: c bit-manipulation bit bit-shift

我有一个字节,我想测试位1是否打开。

我写的条件是:if(byte & (1 << 0)) return true;

混乱:我不明白如何读取字节。

这是位1吗?,即(1 << 0)

00000000
       ^

还是这个?(1 << 1)

00000000
      ^ 

换句话说,我们是从0 -7还是1-8读取一个字节?

1 个答案:

答案 0 :(得分:0)

在计算机科学中,计数始终从0开始。因此,第0位是最右边的一位。因此,在that answer的示例中,110 (6) << 1变成了1100 (12)。这也意味着将0移位是一个空操作(不执行任何操作)。

这也意味着对于您的情况,如果您想测试最右边的位,则只需要做byte & 1-无需移位。