带符号数的编码

(这里对定义不再赘述,直接记录计算方法和心得。)
原码:
非常直观的机器码,与真值差别不大。
正数前补0,后面照抄;负数前补1,后边照抄。
小数相同处理方法。
反码:
解决负数加法运算问题,将减法运算转换为加法运算。
正数前补0,后面照抄;负数前补1,真值部分0变1,1变0(-1001 -> 11001 -> 10110(结果))。

补码:
用来计算加减法非常方便。容易算错。
正数前补0,后面照抄(1001->01001(结果));负数前补1,后面真值0变1,1变0,最后一位+1(-1001 -> 10110+1=10111(结果))。
小数相同处理方法。
&:补码求真值:正数前去0,照抄;负数整个补码0变1,1变0,最后一位+1(10111 -> (01000+1=01001) -> 1001(结果))。
移码:
专门用来表示整数的机器码。
正数符号位是1,数值位不变;负数符号位是0,数值位0变1,1变0,最后一位+1。


串联:
真值 - > 原码 -> 反码 -> 补码 -> 移码
1010 01010 01010 01010 11010
-1010 11010 10101 10110 00110


关于0的表示:(n=5)
原码: +0=00000 -0=10000
反码: +0=00000 -0=11111
补码: +0=00000 -0=10000 -> 11111+1 -> 100000 ->00000(高位溢出)
移码: +0=10000 -0=00000 -> 01111+1 -> 10000

综上:原码,反码表示0有两种;补码,移码表示0有一种。


由上一模块所述,当用四中编码表达一个数(n=5)时,都有2^5的使用范围。但由于原码,反码用两种数来表示’0’,而补码,移码只用一个数表示,所以范围就多了一个……
明确点说,-10000,原码反码没办法表示(n=5)。
但是补码可表示成10000,移码可表示成00000。
推导:-15=11111,-1=10001,-16=-15-1=11111+10001=110000 ->10000

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值