原码、反码、补码
- 在计算机运算的时候,都是以补码的形式运算的
- 正数的原码、反码、补码都一样
- 负数的反码=它的原码符号位不变,其余位取反
- 负数的补码=负数的反码+1
- 0的反码、补码都是0
- 二进制的最高位为符号位,0表示正数,1表示负数
在计算机中,2的二进制为00000010,它的反码、补码都是00000010,如果要对2按位取反,就要对它的补码按位取反。
00000010按位取反结果为11111101
对补码取反的结果仍是补码,只不过它会变成另外一个数的补码,这个数(用a表示)就是我们的计算结果,11111101的最高位是1,说明它是某一个负数的补码,由于负数的补码等于它的反码+1,所以a的反码为11111100,a的原码为10000011,即为-3
00000010按位取反结果为11111101
对补码取反的结果仍是补码,只不过它会变成另外一个数的补码,这个数(用a表示)就是我们的计算结果,11111101的最高位是1,说明它是某一个负数的补码,由于负数的补码等于它的反码+1,所以a的反码为11111100,a的原码为10000011,即为-3
-8的原码为10001000
-8的反码为11110111
-8的补码为11111000
对11111000取反,结果为00000111,最高位是0,说面它是某个正数(b)的补码,由于正数的原码、反码、补码一样,所以b=00000111,即为7
正数
(8位)示例 1
原码 00000001 (首位0表示正数)
反码 00000001 (与原码相同)
补码 00000001 (与原码相同)
负数
(8位)示例 -1
原码 10000001 (首位1表示负数)
反码 11111110 (首位不变,其余取反)
补码 11111111 (反码+1)
(8位)示例 -2
原码 10000010 (首位1表示负数)
反码 11111101 (首位不变,其余取反) 最后一位为1
补码 11111110 (反码+1)向前进一位1并且原位置变成0,逢二进一
1字节 = 8位 实例:~9 原码(二进制码):00001001 反码:00001001 补码:00001001 因为计算机以补码进行存储计算,正数的原码、反码、补码一致 1.原补码取反:11110110 2.取反后的反码:10001001 3.取反后的原码(反码末位+1):10001010 4.二进制转十进制:-10 实例:~(-9) 原码(二进制码):10001001 反码:11110110 补码(负数的补码为其反码末位+1):11110111 因为计算机以补码进行存储计算 1.原补码取反:00001000 2.取反后的反码:00001000 3.取反后的原码:00001000 4.二进制转十进制:8 结论:n取反为"-(n+1)"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!