如何从 java 中的 int 中获取最重要的 n 位
How to get most significant n bits from int in java
我有一个整数,我想得到 java 中的 19 个最高有效位。我尝试了各种方法,其中 none 行得通。
有人可以帮我吗?
整数是4个字节,即4*8 = 32位。所以如果你想获得第 19 位,你可能想尝试这样的事情:
if (myint & 0X00002000 >> 19 == 1) {
//do something
}
从32位int开始,要保留19位最高位,所以舍弃13位最低位;然后你右移 13 位,但必须通过使用 19 位模式和运算来消除可能的符号扩展:
(myint >> 13) & 0x7ffff
添加到 Bram 的答案中,如果您使用无符号移位,您甚至不需要 AND
。
myInt >>> 13;
将为您提供 19MSB(尽管它们现在位于最低位)。
我有一个整数,我想得到 java 中的 19 个最高有效位。我尝试了各种方法,其中 none 行得通。 有人可以帮我吗?
整数是4个字节,即4*8 = 32位。所以如果你想获得第 19 位,你可能想尝试这样的事情:
if (myint & 0X00002000 >> 19 == 1) {
//do something
}
从32位int开始,要保留19位最高位,所以舍弃13位最低位;然后你右移 13 位,但必须通过使用 19 位模式和运算来消除可能的符号扩展:
(myint >> 13) & 0x7ffff
添加到 Bram 的答案中,如果您使用无符号移位,您甚至不需要 AND
。
myInt >>> 13;
将为您提供 19MSB(尽管它们现在位于最低位)。