我有一个字节,我想测试位1是否打开。
我写的条件是:if(byte & (1 << 0)) return true;
困惑:我不明白如何读取一个字节。
这是第1位吗?即。 (1 << 0)
00000000
^
或这个? (1 << 1)
00000000
^
换句话说,我们读取0到7或1到8的字节吗?
在计算机科学中,计数始终从0开始。因此第0位是最右边的位。这就是为什么,在that answer的例子中,110 (6) << 1
成为1100 (12)
。这也意味着移位0是一个空操作(它什么都不做)。
这也意味着,对于您的情况,如果您想测试最右边的位,您需要做的就是byte & 1
- 无需移位。