首页 理论教育 数字编码:原码、反码和补码解析

数字编码:原码、反码和补码解析

时间:2023-06-20 理论教育 版权反馈
【摘要】:原码、反码和补码是把符号位和数值位一起编码的表示方法,也是机器中数的表示方法,这样表示的 “数”便于机器的识别和运算。

数字编码:原码、反码和补码解析

实际生活中表示数的时候,一般都把正数前面加一个 “+”号,负数前面加一个“-”号,但是在数字设备中,机器是不认识这些的,我们就把 “+”号用 “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]。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈