开发者社区 问答 正文

为什么-1无符号右移-1位等于+1?

`short a = -1 ;

System.out.println(Integer.toBinaryString(a)) ;
a >>>= -1 ;
System.out.println(Integer.toBinaryString(a)) ;//输出a为1.`

无符号右移-1位是怎么移动的呢? 该怎么思考这个问题?

展开
收起
蛮大人123 2016-03-10 18:10:46 2602 分享 版权
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    一般位移的位数只取最后几位,相当于对a的位数取模再右移。
    -1 mod 16就等于15了。不清楚java的细节,不过看起来也是这么做的。

    2019-07-17 18:58:06
    赞同 展开评论
问答地址: