繁体   English   中英

Java 位移运算符 (>>>) 如何工作?

[英]How does Java bit shift operator (>>>) work?

我通过右移 20 的 2 的补码然后将结果转换为十进制计算的输出与输出不匹配。 为什么下面的代码会产生这种意想不到的输出?

class OperatorExample{  
    public static void main(String args[]){  

        System.out.println(-20>>>2);  
    } 
}

output: 1073741819

计算是:

取-20:

jshell> Integer.toBinaryString(-20)
$1 ==> "11111111111111111111111111101100"

将它右移 2,删除最后两个零:

jshell> Integer.toBinaryString(-20 >>> 2)
$2 ==> "111111111111111111111111111011"

并将其转换为十进制:

jshell> 0b111111111111111111111111111011
$3 ==> 1073741819

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM