2.原码,反码,补码,移码

在学习原码,反码和补码之前, 先了解机器数真值的概念。

1、机器数和真值

一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机用机器数的最高位存放符号,正数为0,负数为1。

比如,0,101 (这里的逗号“,”仅位区分符号位和数值位)表示+5。如果是 -5 ,就是1,101 。

因为第一位是符号位,所以机器数的形式值就不等于真正的数值。

例如 1000 0011,其最高位1代表负,其真正数值是 -3,而不是形式值131(1000 0011转换成十进制等于131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值

例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1

2、原码

原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。比如:如果字长为8位。

[+1]原= 0000 0001

[-1]原= 1000 0001

第一位是符号位,因为第一位是符号位,所以8位二进制数的取值范围就是:(即第一位不表示值,只表示正负。)

[1111 1111 , 0111 1111]

[-127 , 127]

3、反码

反码的表示方法:

正数的反码是其本身;

负数的反码是在其原码的基础上,符号位不变,其余各个位取反

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

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

4、补码

补码的表示方法是:

正数的补码就是其本身;

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

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

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

补码时有进位怎么办?注意不是补码相加

如[X]补=10000,则X=?又如[X]原=10000,它的补码等于多少?为什么?进位是怎样处理的?

对于正数,也就是第一位的符号位为0,反码,补码,原码相同
对于负数,补码和原码的关系是原码除符号位的其他位取反后加1.
如101010的补码即为:
.先除去符号位的其它位取反得:110101(这个称为原码的反码)
再加1,得:110110

几个规定:
 [+0]反=00000000,[-0]补=[+0]补=00000000,[-0]反=10000000,[-0]原=10000000,[+0]原=00000000
原码和反码的表示范围是:-2^(n-1)<x<2^(n-1),补码是:-2^(n-1)=<x<2^(n-1),规定-2^(n-1)的补码是1后面有n-1个0,原码和反码比补码少一个的原因在于有+0和-0之分,如上文所提到的。
所以你这个题目第一个实际上是十进制的-16,实际上在不增加位数的情况下原码是无法表示的,第二个如果[X]原=10000,从上文可知,即为-0,所以其补码即全为0。
计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诗人在身边

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值