Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么';java中-1的t位移位工作?_Java_Bit Manipulation - Fatal编程技术网

为什么';java中-1的t位移位工作?

为什么';java中-1的t位移位工作?,java,bit-manipulation,Java,Bit Manipulation,我试着用java做-1>-1,但一开始打印的结果仍然是-1,我认为这是因为算术右移的符号扩展性质。但是通过额外的测试,我发现-1>[0,64]是-1。为什么会发生这种情况?这是因为符号扩展-1由仅包含1的位序列表示。因此,使用带符号扩展的右移位总是产生具有所有位1的序列,即-1,而不考虑位移位的第二个操作数。这是因为符号扩展-1由仅包含1的位序列表示。因此,使用带符号扩展的右移位总是产生具有所有位1的序列,即-1,而不考虑位移位的第二个操作数。这是算术右移位的符号扩展性质-1是0xfffffff

我试着用java做
-1>-1
,但一开始打印的结果仍然是
-1
,我认为这是因为算术右移的符号扩展性质。但是通过额外的测试,我发现
-1>[0,64]
-1
。为什么会发生这种情况?

这是因为符号扩展<代码>-1由仅包含1的位序列表示。因此,使用带符号扩展的右移位总是产生具有所有位1的序列,即
-1
,而不考虑位移位的第二个操作数。

这是因为符号扩展<代码>-1由仅包含1的位序列表示。因此,使用带符号扩展的右移位总是产生具有所有位1的序列,即
-1
,而不考虑位移位的第二个操作数。

这是算术右移位的符号扩展性质<代码>-1是
0xffffffff
;最左边的位是一个
1
,所以当你进行算术右移时,你会得到更多的1位,所以它保持
0xffffffff
@AdrianColomitchi,而不是这个问题的重复。在这种情况下,答案与移位运算符仅使用移位量的底部5位有关,因此
1>>32
1>>0
相同。这个问题是关于符号扩展的。我确信这是一个重复,只是不涉及那个问题。这是算术右移的符号扩展性质<代码>-1是
0xffffffff
;最左边的位是一个
1
,所以当你进行算术右移时,你会得到更多的1位,所以它保持
0xffffffff
@AdrianColomitchi,而不是这个问题的重复。在这种情况下,答案与移位运算符仅使用移位量的底部5位有关,因此
1>>32
1>>0
相同。这个问题是关于符号扩展的。我敢肯定这是个骗局,只是不关那个问题。@KelvinZhang没有任何迹象。如果设置了最高阶位,则表示从其他位表示的(无符号)数中减去
2^31
。(2的补码表示)@KelvinZhang没有符号位。如果设置了最高阶位,则表示从其他位表示的(无符号)数中减去
2^31
。(2’s-补语表示法)