我有一个字节,我想测试位1是否打开。
我写的条件是:if(byte & (1 << 0)) return true;
混乱:我不明白如何读取字节。
这是位1吗?,即(1 << 0)
00000000
^
还是这个?(1 << 1)
00000000
^
换句话说,我们是从0 -7还是1-8读取一个字节?
答案 0 :(得分:0)
在计算机科学中,计数始终从0开始。因此,第0位是最右边的一位。因此,在that answer的示例中,110 (6) << 1
变成了1100 (12)
。这也意味着将0移位是一个空操作(不执行任何操作)。
这也意味着对于您的情况,如果您想测试最右边的位,则只需要做byte & 1
-无需移位。