如何从 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(尽管它们现在位于最低位)。