博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C语言笔记——原码、反码、补码

Posted on 2011-08-17 14:18  bug yang  阅读(496)  评论(0编辑  收藏  举报

一、原码表示法

  除了符号位外,其他二进制位为数值的绝对值,这种方案称为“原码”表示法。例如:

  +20的原码:0 000 0000 0001 0100

  -20的原码: 1 000 0000 0001 0100

二、反码表示法

  除了符号为以外,负数的反码表示是在原码的基础上其他二进制取反,而正数的反码表示与原码相同。如:

  +20的反码为: 0 000 0000 0001 0100

  -20的反码为:  1 111 1111 1110 1011

三、补码表示法

  负数的补码表示是在反码基础上加1,而正数的反码表示与原码相同

四、为什么计算机一般采用补码表示法

  原码、反码和补码是由于表示负数的三种方案,三种方案中,原码最适合与乘除类运算,补码适合于加减类运算,而反码则加减与乘除都不是很理想,由于加减运算的频率远高于乘除运算,所以多数计算机系统采用的是补码方案。

  所以所有计算机的加减运算都要将相应的数转换成补码,然后再进行运算。