码迷,mamicode.com
首页 > 其他好文 > 详细

原码、反码和补码

时间:2015-05-02 22:05:14      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:

  1. 原码

正数的符号位用0表示,负数用1表示,其余位为数值,这种表示方法称为原码。

X=+105,[X]原=0110 1001

Y=-105,[Y]原=1110 1001

原码简单易懂,与真值的换算也很方便,但若要进行两个异号数相加或者两个同号数相减的运算,就要做减法操作。然而在一般的计算机中是没有减法运算部件的,减法运算也要用加法部件实现,所以要引进反码和补码。

  1. 反码

正数的反码与原码相同,最高位为符号位,用0表示,其余位为数值。

[X]反=0110 1001

负数的反码为它的正数按位取反,即连同符号位一同取反。

[Y]反=1001 0110

所以,8位二进制数表示的反码范围为-127~+127。当带符号数用反码表示时,最高位为符号位,当它为正数时,后7位为真正的值,当它为负数时,后7位要取反后才能得到真正的值。

  1. 补码

正数的补码表示与原码相同,最高位为符号位,用0表示,其余位为真值,负数的补码最高位为1,数值部分则由它的反码再加1形成。

[X]补=0110 1001

[Y]补=1001 0111

8位二进制数能表示的补码范围为-128~+127,可以推算出16位二进制数能表示的二进制补码的范围为-32768~+32767。当带符号数用补码表示时,最高位是符号位,当符号位是0时,表示正数,后7位为其真正的数;当符号位是1时,表示负数,要将后7位的最低为减1,求得反码,再按位取反,才能得到真正的数(真数)。


任何一个数用补码表示后,都可以看成“连同符号位的数”。符号位也一起参加运算,一个数要减去另一个数时,只要加上其补码即可。

例做减法运算,求7-19=?可以用7+[-19]补来完成。

[7]补= 0000 0111

[+19]补=0001 0011

[-19]补=1110 1101


0000 0111 [7]补

+ 1110 1101 [-19]补

技术分享 1111 0100

所以,和的补码=1111 0100

和的反码=1111 0011

和的原码=1000 1100 其真值为-12。

原码、反码和补码

标签:

原文地址:http://www.cnblogs.com/MichaelBin/p/4472565.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!