原码、反码、补码的区别(自我理解)

1.原码(十进制的二进制表示形式)

字长:CPU一次能并行处理的二进制位数

比如八位字长,第一位是符号位:

如+3=00000011        -3=10000011

2.反码(为解决的是原码负数计算不方便的问题)

正数的反码不变,负数的反码符号位不变,其余位取反;

例如:00000001[原]=00000001[反];10000001[原]=11111110[反]

3.补码(相当于原码的反码+1的效果,解决的是反码跨零运算存在两个零的问题,跨零运算时不会有误差)

补码的表示方法是:

正数的补码就是其本身;

负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1。(也即在反码的基础上+1)

[+1] = [0000 0001]原= [0000 0001]反= [0000 0001]补

[-1] = [1000 0001]原= [1111 1110]反= [1111 1111]补

注:正数的反码和补码都和原码相同

用反码计算,如果最终的结果划0了,就会有误差

-0        10000000[原]        11111111[补]

                     +1

+0        00000000[原]        00000000[补]        (溢出)

即跨0就会有误差,有一个误差,将最终结果再加上一个1即可

                                                注:-128是个特殊的数字

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值