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


 

  今天晚上学习《零基础学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)。

  

 

 

 

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM