short a = -1 ;
System.out.println(Integer.toBinaryString(a)) ;
a >>>= -1 ;
System.out.println(Integer.toBinaryString(a)) ;//输出a为1.
无符号右移-1位是怎么移动的呢? 该怎么思考这个问题?
short a = -1 ;
System.out.println(Integer.toBinaryString(a)) ;
a >>>= -1 ;
System.out.println(Integer.toBinaryString(a)) ;//输出a为1.
无符号右移-1位是怎么移动的呢? 该怎么思考这个问题?
8 回答6.5k 阅读
4 回答706 阅读✓ 已解决
2 回答3.4k 阅读
3 回答1.9k 阅读✓ 已解决
1 回答2.2k 阅读✓ 已解决
1 回答2.1k 阅读✓ 已解决
1 回答972 阅读✓ 已解决
一般位移的位数只取最后几位,相当于对a的位数取模再右移。
-1 mod 16就等于15了。
不清楚java的细节,不过看起来也是这么做的。