大家好,欢迎来到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?
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