开发者社区> 问答> 正文

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

已解决

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

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

展开
收起
西秦说云 2016-02-08 23:08:34 2758 0
1 条回答
写回答
取消 提交回答
  • 码农|Coder| Pythonista
    采纳回答

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

    2019-07-17 18:28:24
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载