如何在java中从int中获取最重要的n位

如何在java中从int中获取最重要的n位,java,caching,bit-manipulation,Java,Caching,Bit Manipulation,我有一个int,我想得到java中19个最重要的位。我尝试了各种方法,但都不管用。 有人能帮我吗?整数是4字节的,即4*8=32位。因此,如果您想获得第19位,您可能需要尝试以下方法: if (myint & 0X00002000 >> 19 == 1) { //do something } 从32位整数开始,您希望保留19位的最高有效值,因此丢弃13位的最低有效值;然后右移13位,但必须通过使用19位模式进行anding来消除可能的符号扩展: (myint

我有一个int,我想得到java中19个最重要的位。我尝试了各种方法,但都不管用。
有人能帮我吗?

整数是4字节的,即4*8=32位。因此,如果您想获得第19位,您可能需要尝试以下方法:

 if (myint & 0X00002000 >> 19 == 1) {
     //do something
 }

从32位整数开始,您希望保留19位的最高有效值,因此丢弃13位的最低有效值;然后右移13位,但必须通过使用19位模式进行anding来消除可能的符号扩展:

(myint >> 13) & 0x7ffff

再加上Bram的答案,如果使用无符号移位,您甚至不需要


myInt>>>13
将为您提供19MSB(尽管它们现在位于最低位)。

请详细说明您的问题。我想计算java中直接映射缓存实现的地址标记部分。所以我需要比较缓存线的标记部分和地址的标记部分。地址以整数形式给出。我想得到该地址的19个最高有效位(19是标记中的位数)。您想如何表示这些位?作为二进制字符串?那么符号位呢?要得到所有19位的最高有效位呢?去掉右移位,就得到了所有19位的最高有效位。事实上,无符号移位也是一个很好的解决方案:myint>>>13。