Java 从位移位中检索元素

Java 从位移位中检索元素,java,bit-manipulation,Java,Bit Manipulation,我如何从“我”中找回“脸” int i=(id |)(face你不会,除非你能保证它只有2位宽,并且id只有16位宽,在这种情况下,你所要做的就是右移和掩码。这是一个技巧性问题吗?因此,考虑到id只有16位宽,而face只有2位宽的限制,请使用: face = (i >> 16 ) & 3 我真的不明白你的问题。你已经有了一个对face的引用,你可以给它分配一个新的值,不一定要从I中提取它。你知道id、face和type的值范围吗?对I的引用后来丢失了,因为这是一种压缩大量

我如何从“我”中找回“脸”


int i=(id |)(face你不会,除非你能保证它只有2位宽,并且
id
只有16位宽,在这种情况下,你所要做的就是右移和掩码。这是一个技巧性问题吗?

因此,考虑到id只有16位宽,而face只有2位宽的限制,请使用:

face = (i >> 16 ) & 3

我真的不明白你的问题。你已经有了一个对face的引用,你可以给它分配一个新的值,不一定要从I中提取它。你知道
id
face
type
的值范围吗?对I的引用后来丢失了,因为这是一种压缩大量数据的方法。是的,16对于id,2表示脸,4表示类型。事实上它只有2位宽,id是16位宽。这是我最初想到的:(i>>16)和16,但这不起作用!@Colby你必须使用正确的移位和掩码。如果它是2位宽,你需要
&3
。谢谢!你怎么知道用3来掩码?(我正在努力学习这个东西)3是(二进制)00000011,所以用它与X相加只能得到X的最后2位。
face = (i >> 16 ) & 3