我有 1 个数字,需要 9 位,这些位分布为 2 个字节(最高有效字节和最低有效字节)。
MSB 类似于:
0?????[Bit8][Bit7]
LSB 如下:
0[Bit6][Bit5][Bit4][Bit3][Bit2][Bit1][Bit0]
我的号码由 Bit0 到 Bit8 9 位组成。 ?
表示 1 或 0。
那么,我如何获得我的电话号码?
我可以想到将 MSB 中的位左移 7 位,然后将其与 LSB 组合起来形成一个 16 位数字。但是,当MSB左移7位时,如何避免丢失Bit8呢?
最佳答案
在这种情况下,Java 按位运算符是在 32 位整数上完成的,因此当您向左移动时不会丢失 [bit8]。
int msb = 0xFF;
int lsb = 0xFF;
int result = ( ( msb & 0x3 ) << 7 ) | ( lsb & 0x7F );
System.out.println(result == 0x1FF);
关于java - 如何在Java中组合2个字节的位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18236560/