Java中的位移位
可能是我太累了。Java中的位移位,java,bit-manipulation,bit,Java,Bit Manipulation,Bit,可能是我太累了。 为什么下列值不显示相同的值 int x = 42405; System.out.println(x << 8); System.out.println((x &0x00ff) << 8); intx=42405; System.out.println(xEDIT:好的,我把下面的部分留给子孙后代 如果x是int,那么它非常简单:x下面,x是0xff,在一种情况下,你屏蔽了上面的3个字节,这意味着你 您可以(0x123和0x00ff)你的
为什么下列值不显示相同的值
int x = 42405;
System.out.println(x << 8);
System.out.println((x &0x00ff) << 8);
intx=42405;
System.out.println(xEDIT:好的,我把下面的部分留给子孙后代
如果x
是int
,那么它非常简单:x下面,x是0xff,在一种情况下,你屏蔽了上面的3个字节,这意味着你
您可以(0x123和0x00ff)你的输出是什么?对我来说很好,有几个值;为什么不起作用?对不起,伙计们。更新了类型的帖子为什么显示相同的值?@Carlos:这是我所期望的。我错了。现在对我来说很清楚0x00ff不是暗示类型很短吗?@pablochan:不一定。基本上,这完全不清楚-我们不得不这么做pe OP实际上提供了更多的信息…@user384706:我已经编辑了我的答案。你知道int
在Java中总是32位的,对吗?
11111111111111111111111100000000 = -256
00000000000000001111111100000000 = 65280
int x = 0x123;
System.out.println(x << 8); //prints 74496
System.out.println((x &0x00ff) << 8); //prints 8960
byte x = (byte)0xAA; //x is negative
System.out.println(x << 8); //prints -22016
System.out.println((x &0x00ff) << 8); //prints 43520