Erlo

123按位取反是多少,即~123=?

2018-12-09 23:01:33 发布   632 浏览  
页面报错/反馈
收藏 点赞

 

  今天晚上学习《零基础学Java》,看到第50页时,发现书上一行代码自己想不通,这行代码意思是将123按位取反,程序运行后输出结果是-124,即~123=-124.

  开始我个人理解是123转换成二进制为:01111011,按位取反后为10000100,即132,与真实输出结果-124不一致。后来我查阅相关资料,才明白原因,以下为正确计算方法:

  (1)二进制数在内存中以补码的形式存储,123的原码为01111011,123的反码为10000100,123的补码为10000101,即123在内存中以10000101形式存储。

  (2)10000101按位取反后为:10000101,其补码为:10000110

  知识点:

  1>反码的表示方法是:正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。

  2>补码的表示方法是:正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1(即在反码的基础上+1)。

  

 

 

 

  

 

登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认