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

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

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

阅读 2.9k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题