笔记--原码,反码以及补码理解

真值:表示真实值的大小 例如:+123, -1011…
机器数:一个数在计算机中的二进制表示,最高位为符号位所以表示不了真实值的大小,例: 1101 = -5
原码:十进制数在计算机中的二进制表示,第一位为符号位(0正1负) 如:0010 1110…
计算机通过机器数进行运算,但是由于机器数存在符号位,所以在进行运算时,如果对符号相反的两数进行相加则会得到错误结果,如:1 + (-1) = 0转化为原码为 0001 + 1001 = 1010 = -2
由于正负相同数相加应该为0,所以人们想到将负数符号位不变 其余位取反 获得反码进行计算
反码:正数的反码还是原码;负数的反码,原码符号位不变,其余位取反 如 -1 :1001(原) 1110(反)
此时再将正负一进行相加则结果为负数的情况能正确计算出来
-2 + 1 = -1 1010(原) + 0001(原) = 1011(原) = -3 1101(反) + 0001(反) = 1110(反) = -1
但是当正负数大小相同时会出现正负零 以及结果为正数时结果不准确的问题
-1 + 2 = 1 1001(原) + 0010(原) = 1011(原) = -3 1110(反) + 0010(反) = 10000(反) = 0
-1 + 1 = 0 1001(原) + 0001(原) = 1010(原) = -2 1110(反) + 0001(反) = 1111(反) = -0
所以补码出现了,补码在反码的基础上再加上1即可
补码:正数的补码是原码,负数的补码是负数的反码加一。
-2 + 1 = -1 1110(补) + 0001(补) = 1111(补) = -1
-1 + 2 = 1 1111(补) + 0010(补) = 10001(补) = 1
-1 + 1 = 0 1111(补) + 0001(补) = 10000(补) = 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值