首页 > 解决方案 > 试图测试一个字节的第 1 位是否被翻转?位移位

问题描述

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

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

困惑:我不明白如何读取一个字节。

这是Bit 1吗?IE。(1 << 0)

00000000
       ^

或这个?(1 << 1)

00000000
      ^ 

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

标签: cbit-manipulationbitbit-shift

解决方案


在计算机科学中,计数总是从 0 开始。所以第 0 位是最右边的一位。这就是为什么,在那个答案的例子中,110 (6) << 1变成了1100 (12)。这也意味着移位 0 是一个空操作(它不做任何事情)。

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


推荐阅读