二进制有符号数处理(原码、补码、反码)

二进制有符号数处理(原码、补码、反码)

1、定义

在计算机进行运算时,需要将负数编码至二进制形式,所用的编码方法称为有符号数的表示。

2、原码

二进制里面没办法直接表示用“+”表示正号,“-”表示负号。
故分配最高位作为符号位来表示这个符号:当最高位为0表示一个正数,为1表示一个负数。

我们给出8位原码的二进制中有符号值和无符号值:

二进制有符号值无符号值
0000 0000+00
0000 000111
0111 1111127127
1000 0000-0128
1000 0001-1129
1111 1111-127255

这种表示法导致的结果就是可以有两种方式表示零,00000000(0)与10000000(−0),这大大增加数字电路的复杂性和设计难度。CPU亦须执行两次比较,来测试运算结果是否为零。

3、反码

另一方面,一种叫做反码的系统也可以用于表示负数,正数与原码形式一样,无需取反。
一个负数的二进制数反码形式为其绝对值部分按位取反,即符号位不变,其余各位按位取反。

我们给出8位反码的二进制中有符号值和无符号值:

二进制有符号值无符号值
0000 0000+00
0000 000111
0111 1101125125
0111 1110126126
0111 1111127127
1000 0000-127128
1000 0001-126129
1000 0001-1130
1111 1110-1254
1111 1111-0255

同原码表示一样,0的反码表示形式也有两种:00000000(+0)与11111111(−0),增加了数字电路的复杂性和设计难度。

4、补码

补码回避了0有多种表示的问题以及循环进位的需要。
在补码表示中,负数以位模式表示为正值的反码加1(当作无符号数),正数与原码形式一样。
我们给出8位反码的二进制中有符号值和无符号值:
二进制有符号值无符号值
0000 000000
0000 000111
0111 1110126126
0111 1111127127
1000 0000-128128
1000 0001-127129
1000 0010-126130
1111 1110-2254
1111 1111-1255

总结:

  • 二进制正数,三码合一,即原码、反码、补码都一样;
  • 二进制负数,反码是原码除最高位符号位余下取反所得结果,补码是反码再加1的结果

示例:4-13用二进制计算,写下计算过程和结果
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

吴不言不言

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

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

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

打赏作者

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

抵扣说明:

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

余额充值