实际生活中表示数的时候,一般都把正数前面加一个 “+”号,负数前面加一个“-”号,但是在数字设备中,机器是不认识这些的,我们就把 “+”号用 “0”表示,“-”号用“1”表示,即把符号数字化。
在计算机中,数据是以补码的形式存储的,所以补码在计算机语言的教学中有比较重要的地位,而讲解补码必须涉及到原码、反码。原码、反码和补码是把符号位和数值位一起编码的表示方法,也是机器中数的表示方法,这样表示的 “数”便于机器的识别和运算。
1.原码
原码的最高位是符号位,数值部分为原数的绝对值,一般机器码的后面加字母B。
例如,十进制数(+7)10用原码表示时,可写作:[+7]原=00000111B。
其中左起第一个“0”表示符号位 “+”,字母B表示机器码,中间7位二进制数码表示机器数的数值。
显然,8位二进制原码的表示范围为-127~+127。
2.反码
正数的反码与其原码相同,负数的反码是对其原码逐位取反所得,在取反时注意符号位不能变。
例如,十进制数(+7)10用反码表示时,可写作:[+7]反=00000111B。
(-7)10用反码表示时,除符号位外各位取反得:[-7]反=11111000B。
反码的数0和原码一样,也有两种形式,即
反码的最大数值和最小数值分别为
显然,8位二进制反码的表示范围也是-127~+127。
3.补码
正数的补码与其原码相同,负数的补码是在其反码的末位加1,符号位不变。
例如,十进制数(+7)10用补码表示时,可写作:[+7]补=00000111B。
(-7)10用补码表示时,除符号位外各位取反最后加1得:[-7]补=11111001B。
补码的数0只有一种形式,即
补码的最大数值和最小数值分别为
其中,用[-128]补代替了[-0],因此,8位二进制补码的表示范围是-128~+127。
4.原码、反码和补码之间的相互转换(www.xing528.com)
由于正数的原码、反码和补码表示方法相同,因此不需要转换,只有负数之间存在转换的问题,所以我们仅以负数情况进行分析。
【例4.4】 求原码[X]原=11011010B的反码和补码。
解 反码在其原码的基础上取反,即 [X]反=10100101B。
补码则在反码基础上末位加1,即 [X]补=10100110B。
【例4.5】 已知补码[X]补=11101110B,求其原码。
解 按照求负数补码的逆过程,数值部分应是最低位减1,然后取反。但是对二进制数来说,先减1后取反和先取反后加1得到的结果是一样的,因此我们仍可采用取反加1的方法求其补码的原码,即 [X]原=10010010B。
本节重要知识点学习检测
1.完成下列数制的转换。
(1)(256)10= ( )2= ( )16;
(2)(B7)16= ( )2= ( )10;
(3)(10110001)2= ( )16= ( )8。
2.将下列十进制数转换为等值的8421BCD码。
(1)256;
(2)4096;
(3)100.25;
(4)0.024。
3.写出下列各数的原码、反码和补码。
(1)[+32];
(2)[-48];
(3)[+100];
(4)[-86]。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。