Tayker Asked:2020-09-12 18:37:44 +0000 UTC2020-09-12 18:37:44 +0000 UTC 2020-09-12 18:37:44 +0000 UTC 如何在java中将一个字节中的前4位清零 772 假设有一个字节 b = 63。以位为单位,它将是 0011 1111。如何将前 4 位归零以得到 0000 1111?我这样做可以将字节转换为十六进制系统。为了消除最后 4 位,我使用 >> 移位。 java 2 个回答 Voted Best Answer jfs 2020-09-12T19:54:53Z2020-09-12T19:54:53Z 要从重置前 4 位开始,从左到右计数(就像人们在纸上写的那样):0b0110_00100b0000_0010 b &= 0b0000_1111; // & 0x0f 要从重置前 4 位,从右到左计数0b0110_0010:0b0000_0110 b = (byte) ((b & 0b1111_0000) >> 4); // & 0xf0) >> 4 >>在这种情况下,和之间没有区别>>>。 对于一个字节,很容易打印所有可能的值来选择所需的行为来清除左侧或右侧的位。 顺便说一句:63 == 0b0011_1111,不0b0110_0010,甚至不0x63 == 0b0110_0011等于0b0110_0010。 DaysLikeThis 2020-09-12T18:45:51Z2020-09-12T18:45:51Z 例如,使用按位运算符 >>>= Сдвиг вправо с заполнением нулями с присваиванием public static void main(String[] args) { byte b = 63; System.out.println(b); b >>>= 4; System.out.println(b); } 结果: 63 3
要从重置前 4 位开始,从左到右计数(就像人们在纸上写的那样):
0b0110_00100b0000_0010要从重置前 4 位,从右到左计数
0b0110_0010:0b0000_0110>>在这种情况下,和之间没有区别>>>。对于一个字节,很容易打印所有可能的值来选择所需的行为来清除左侧或右侧的位。
顺便说一句:
63 == 0b0011_1111,不0b0110_0010,甚至不0x63 == 0b0110_0011等于0b0110_0010。例如,使用按位运算符
结果: