按位取反(~)

按位取反(~)二进制数在内存中是以补码的形式存放的1、原码、反码、补码1.1、正数原码:符号位0(代表+号),加上数字的二进制形式正数原码、反码、补码相等1.2、负数原码:符号位1(代表-号),加上数字的二进制形式反码:相对于原码符号位不变,数值位依次取反(0变1,1变0)补码:相对于原码符号位不

大家好,欢迎来到IT知识分享网。

二进制数在内存中是以补码的形式存放的

1、原码、反码、补码

1.1、正数

  • 原码:符号位0(代表+号),加上数字的二进制形式
  • 正数原码、反码、补码相等

1.2、负数

  • 原码:符号位1(代表-号),加上数字的二进制形式
  • 反码:相对于原码符号位不变,数值位依次取反(0变1,1变0)
  • 补码:相对于原码符号位不变,数值位依次取反,再加1(即补码=反码+1)

1.2、零

  • 0有+0和-0两种形式,分别按照上面的计算即可
+0:
    1. 计算原码:0000
    2. 计算补码:0000(正数原码与补码相同)
    3. 对补码依次取反:1111(取反后数字的补码,由符号位可知为负数)
    4. 取反后数字反码:1110(负数的反码=补码-1)
    5. 取反后数字原码:1001(相对于反码符号位不变,数值位依次取反)
    6. 转化为十进制:-1
    
-0:
    1. 计算原码:1000
    2. 计算反码:1111(相对于原码符号位不变,数值位依次取反)
    3. 计算补码:0000(负数补码=反码+1)
    4. 对补码依次取反:1111(取反后数字的补码,由符号位可知为负数)
    5. 取反后数字反码:1110(负数的反码=补码-1)
    6. 取反后数字原码:1001(相对于反码符号位不变,数值位依次取反)
    7. 转化为十进制:-1

为什么-0的补码是0000?

-0的补码

2、按位取反原理

  • 对数字的补码(即内存中的存储形式),进行依次取反,得到取反后数字的补码,然后将补码转换为原码,再转为10进制数即为按位取反后的数值

示例(以四位二进制为例)

+5:
    1. 计算原码:0101
    2. 计算补码:0101(正数原码与补码相同)
    3. 对补码依次取反:1010(取反后数字的补码,由符号位可知为负数)
    4. 取反后数字反码:1001(负数的反码=补码-1)
    5. 取反后数字原码:1110(相对于反码符号位不变,数值位依次取反)
    6. 转化为十进制:-6
    
-4:
    1. 计算原码:1100
    2. 计算反码:1011(相对于原码符号位不变,数值位依次取反)
    3. 计算补码:1100(负数补码=反码+1)
    4. 对补码依次取反:0011(取反后数字的补码,由符号位可知为正数)
    5. 取反后数字原码:0011(正数原码、反码、补码相同)
    6. 转化为十进制:+3

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/31518.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信