【数字逻辑】带符号数的编码:原码、反码、补码

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、带符号数是什么?

  1. 为什么要引入带符号数:在数制转换中整数和小数部分不太一样,类似的,正负数编码方式不同,所以需要规定带符号数(Signed Binary Numbers)
  2. 编码规则:最高位为符号位,0为正,1为负,其余位为数值位
  3. 范围:二进制正负数的一般定点(浮点有其他方法)方法
  4. 相关概念:代码位数为字长(bit),数值称为真值。
  5. 原码反码补码在符号位是相同的
  6. 正数的原码反码补码相同,主要是负数有区别

二、原码(true form)

  1. 表示方法:符号加数值
  2. 正负数的原码表示方法相同

三、反码(一补数)(1 s’complement)

  1. 正数的一补同正数的原码
  2. 负数的一补符号位为1,数值按位取反
  3. 注意所要求的位数,表示时可能要在符号位后补一位0

四、补码(二补数)(2 s’complement)

  1. 补码是最常用的,原因有二。原因一:原码和一补表示时会有+0和-0的两种表示,与数学中不一样;原因二:原码和一补计算时值会有问题
  2. 正数的二补与它的原码相同
  3. 负数的符号位为1,数值位计算:
    1. 方法一是“取反加一”。
    2. 第二种方法是2^n+N(N为负数时的补)
  4. 二补还原为原码的两种方法
    1. 再求补(补补为原)
    2. 减一取反
  5. 与前面两种编码的不同
    1. 二补没有-0
    2. 二补在负数上比原码多表示一个数,可以到-2^(n-1)
  6. 补码的计算
    1. 补码更适合带符号数的二进制数的计算
    2. 减法转换为+负数
    3. 减法是可能会进位,但是需要舍掉最高位保证位数不变(位数不超就可以)
    4. 加法时,可能会字长不够,需要补位

五、总结

  1. 注意字长(bits),过长需舍首位,短了需要补0
  2. 注意范围,二补因为只有一个0,在负数上比原码多表示一个数
  3. 注意是用带符号数去表示常用正负数,所以运算需要匹配,所有的规则都是为了运算匹配。例如0和1只是代表正负,不能在直接运算中起到正负号的效果,所以如有不匹配需要灵活变通。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

川弥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值