二进制补码

在计算机系统中,数值一律用二进制补码进行表示,补码的计算规则是:

补码 等于 原码按位 取反 再 加 1。

有符号类型的数值,最高位是符号位,1为负数,0为正数。

按照补码计算规则,可得 正数的补码等于其原码。

如:

char num;

num = 1;

如 +1 的原码是 0000 0001 ,补码也是 0000 0001;

而 - 1 的补码是 1111 1111。

 

以下以8位有符号类型的数值来认识一下补码:

可以看到,当用8位来存储数据时,数据的大小范围是 -128到127。

可以发现,+127加1后,如果是无符号的,表示的是128,但如果是有符号的,则刚好是-128的补码,再加1,是-127的补码。

而,-1加+1后,又变为0,回到了表格的起点。

0 1 2 3 …… 126 127  -128 -127 -126 -2 -1 0 

可以发现,8位能表示的最大的值加1后 变成8位能表示的最小的值,形成首尾相接的一个环。

 

有一个办法可以快速的算出负数的补码:

-1的补码:0xff(255) = 256 - 1

-2的补码:0xfe(254) = 256 - 2

-127的补码:0x81(129) = 256 - 127

-128的补码:0x80(128) = 256 - 128

可以发现,负数的补码 = 256 - |负数自身|,当然这只是8位时的情况。

如果是 n 位的:

负数的补码 = 2^n -  |负数自身|

 

 

 

 

posted @ 2012-11-18 17:06  枫部落  阅读(994)  评论(0编辑  收藏  举报
点击这里给我发消息