Java位操作删除(清零)不感兴趣的位

时间:2012-12-27 18:58:45

标签: java bit-shift

示例

byte b = 127;

(初始化为等于11111111)

现在我只关心第1和第0位

我怎么做位移得到00000011

我认为如果我是对的,这被称为“掩蔽位”?

我试过了 b<<五 然后 B个;>五 将其他位清零但这是错误的

我的目标

switch ((myByte >> 3) & 3)
{
    case 3:
        resevered = true;
        break;
    case 2:
        open = true;
        break;
    case 1:
        SingleOnly = true;
        break;
    case 0:
        daulMode = true;
        break;
}

1 个答案:

答案 0 :(得分:5)

b & 0x03

将给出一个包含前两位的字节,其余位为零填充。

这是有效的,因为0x03是二进制的00000011,而

11111111

00000011

将前六位归零,只留下剩余的两位。