Khnaone 2021-04-01 19:01 采纳率: 33.3%
浏览 39
已采纳

Java中的移位运算

这是我今天看到的关于移位运算的帖子,然后有了一点想法。

对于一个byte类型的变量a,a = 5 ,它的二进制补码为00000101,按照这个想法,逻辑右移一位的结果为00000010,正数的反码、补码、原码都一样,它的结果应该为2。
同一个变量,进行同样的初始化操作,算数右移一位,结果应该为10000010,也就是说,算数右移一位,这个数从正数变成了负数,结果为-2。
我不明白,为什么右移操作会连符号位一起改变,还有一点,就是,为什么移位操作会比乘除法更快捷?因为我要计算它的原码,对于负数,我还要计算反码和补码。

 

  • 写回答

3条回答 默认 最新

  • CSDN专家-三岁丫 2021-04-01 20:04
    关注

    这个多个问题,我一个一个给你说吧

    1. 为什么右移操作会连符号为一起改变,

    这个嘛,确实不知道呢,毕竟别人这么设计,可能有很多考虑在里面吧,但是不知我这种渣渣能知道了的

    2. 移位操作比乘除快

    是因为对计算来说移位很简单,而如果要完成的一次乘除的话,可能需要更多的计算。具体为啥,可能你需要了解一下底层这么实现加减乘除的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效