【软考】(四)原码、反码、补码


什么是数制?用来表示数值的规则,如十进制,二进制.


机器数

用二进制的形式来表示数;最高位为符号位,1表示负数,0表示正数.

:  1---->00000001;-1---->1000 0001

真值

从上面我们知道了机器数是计算机用来表示数的一种形式,但是用于最高位是符号位。这样就出现这样情况,1000 0001表示的真正数值为1,而不是129.这样我们把一个机器数表示的真正的实际的意义的值称之为真值。

原码、反码、补码

总体上来讲原码反码补码都是计算机本身用来存储数的一种方式。


原码

规则:符号位+真值的绝对值

如:[+1]原码=0000 0001

        [-1]原码=1000 0001

反码

规则:正数反码为本身

            负数反码为原码的取反,但符号位不变

如:[+1]原码=[+1]反码=0000 0001

        [-1]原码=1000 0001=[-1]反码=1111 1110;

 

补码

规则:正数补码为本身

            负数补码为原码的反码的基础之上加1

如:[+1]原码=[+1]补码;

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


为何会出现三种表示方式?


通过上面三种我们得到正数1在各种情况下都是一致的:[+1]\\补码=0000 00001

而反码不是一致的。

 

在计算机内部,为了将运算变得简单。将符号位也投入到运算之中来,这样不需要计算机去分析符号位的作用。但是我们发现

[+1]原码=0000 0001+[-1]原码=1000 0001=0000 00001=1;而不是0,这样一来就出现了错误。如何解决这个问题呢?


为了解决这个问题,反码出现了

[+1]原码+[-1]原码=1000 0001=[+1]反码=0000 0001+[-1]反码=1111 1110=0000 0000(反码)=0000 0000 (原码)=-0


这样一来解决了原码之间运算的问题,但是问题又出现了-0=1000 0000(原码);+0=0000 0000 (原码);这样在计算机看来不一样。是没有意义的。

[+1]原码+[-1]原码=1000 0001=[+1]补码=0000 0001+[-1]补码=1111 1111=0000 0000(补码)=[0000 0000](原码)

这样用[0000 0000](原码)表示0就不会出现问题了。



总的来说,在整数中,原码和补码、反码都是一样的,对于负数反码在符号位不变的情况下各位取反所得;补码为反码基础上加1.而原码补码反码的出现都是为了满足在计算机在运算过程更加简单和便捷而出现的。

 

 

转载于:https://www.cnblogs.com/guziming/p/4232688.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值