欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-08-20 17:41:22
今天晚上学习《零基础学Java》,看到第50页时,发现书上一行代码自己想不通,这行代码意思是将123按位取反,程序运行后输出结果是-124,即~123=-124. 开始我个人理解是123转换成二进制为:01111011,按位取反后为10000100,即132,与真实输出结果-124不一致。后来我查阅 ......

 

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