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

sta*_*low -2 java bit-shift

byte b = 127;
Run Code Online (Sandbox Code Playgroud)

(初始化为等于11111111)

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

我如何转移得到00000011

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

我尝试了b << 5然后b >> 5将其他位置零,但那是错误的

我的目标

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

Rob*_*vey 5

b & 0x03
Run Code Online (Sandbox Code Playgroud)

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

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

11111111
Run Code Online (Sandbox Code Playgroud)

00000011
Run Code Online (Sandbox Code Playgroud)

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