试图测试一个字节的第1位是否被转动?位移

问题描述 投票:-2回答:1

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

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

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

这是第1位吗?即。 (1 << 0)

00000000
       ^

或这个? (1 << 1)

00000000
      ^ 

换句话说,我们读取0到7或1到8的字节吗?

c bit-manipulation bit bit-shift
1个回答
0
投票

在计算机科学中,计数始终从0开始。因此第0位是最右边的位。这就是为什么,在that answer的例子中,110 (6) << 1成为1100 (12)。这也意味着移位0是一个空操作(它什么都不做)。

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

© www.soinside.com 2019 - 2024. All rights reserved.