原码 反码 补码 移码

原码、反码、补码都是有符号定点数的表示方法。

一个有符号定点数的最高位为符号位,0是正,1是负。

反码 = 原码(除符号位外)每位取反;

补码= 反码+ 1;

反码 = 补码 - 1;

移码= 补码符号位取反;

原码就是这个数本身的二进制形式。

 

正数的反码和补码都是和原码相同。

负数的反码是将其原码除符号位之外的各位求反

例:

[-3]原=10000011

[-3]反=11111100

[-3]补=11111101

[-3]移=01111101

 

为什么要设立补码呢?

第一是为了能让计算机执行减法:

[a-b]补=a补+(-b)补

第二个原因是为了统一正0和负0 

正零:

00000000 

负零:

10000000 

这两个数其实都是0,但他们的原码却有不同的表示。但是他们的补码是一样的,都是00000000 

特别注意,如果+1之后有进位的,要一直往前进位,包括符号位!(这和反码是不同的!)

[10000000]补=[10000000]反+1 =11111111+1 =(1)00000000 =00000000(最高位溢出了,符号位变成了0)

 

 

总结:

 在计算机内,定点数有3种表示法:原码、反码和补码

 所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

 反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

 补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

移码表示法规定:正数和负数的移码都是补码符号位取反。

转载于:https://www.cnblogs.com/acm-jing/p/4456041.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值