计算机补码:
(1)输入是一个32位二进制整数每一位是0/1
(2)如果一个数第一位是0表示是非负数,只要把这个转化为十进制就可以了
(3)否则就是对应的绝对值的反码加1,
请根据一个数的补码计算出这个数的值
比如
11111111 11111111 11111111 11111110(10) =-2(10)
00000000 00000000 00000000 00000110 (10)=6(10)
求给定数值的补码分以下两种情况:
正数
例:+9的补码是00001001。(备注:这个+9的补码是用8位2
进制来表示的,补码表示方式很多,还有16位二进制补码表示形式,以及32位二进制补码表示形式,64位进制补码表示形式等。每一种补码表示形式都只能表示有限的数字。)
负数
求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1
[4] 。
同一个数字在不同的补码表示形式中是不同的。比如-15的补码,在8位二
进制中是11110001,然而在16位二进制补码表示中,就是1111111111110001。以下都使用8位2进制来表示。
例:求-5的补码。
-5对应正数5(00000101)→所有位取反(11111010)→加1(11111011)
所以-5的补码是11111011。
0的补码
数0的补码表示是唯一的 [3]。
[+0]补=[+0]反=[+0]原=00000000
[ -0]补=11111111+1=00000000
补码求原码
已知一个数的补码,求原码的操作其实就是对该补码再求补码
⑴如果补码的符号位为“0”,表示是一个
正数,其原码就是补码。
⑵如果补码的符号位为“1”,表示是一个
负数,那么求给定的这个补码的补码就是要求的原码。
例:已知一个补码为11111001,则原码是10000111(-7)。
因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”。
其余七位1111001取反后为0000110;再加1,所以是10000111。
意义
补码“模”概念的引入、
负数补码的实质、以及补码和真值之间的关系所揭示的补码符号位所具有的数学特征,无不体现了补码在计算机中表示数值型数据的优势,和
原码、
反码等相比可表现在如下方面
[3]
(1)解决了符号的表示的问题 [3]
(2)可以将减法运算转化为补码的加法运算来实现,克服了原码加减法运算繁杂的弊端,可有效简化运算器的设计 [3]
(3)在
计算机中,利用电子器件的特点实现补码和真值、原码之间的相互转换,非常容易
[3]
(4)补码表示统一了符号位和数值位,使得符号位可以和数值位一起直接参与运算,这也为后面设计
乘法器除法器等运算器件提供了极大的方便。总之,补码概念的引入和当时运算器设计的背景不无关系,从设计者角度,既要考虑表示的数的类型(小数、整数、实数和复数)、数值范围和精确度,又要考虑数据存储和处理所需要的硬件代价。因此,使用补码来表示机器数并得到广泛的应用,也就不难理解了。
[3]