首页 理论教育 反码和补码-来自《单片机控制技术及应用》的相关知识

反码和补码-来自《单片机控制技术及应用》的相关知识

时间:2023-11-05 理论教育 版权反馈
【摘要】:原码、反码和补码是机器数的三种基本形式,它和机器数的真值不同。补码的标记方法和原码、反码类似,只要在被括数方括号的右下角添加一个“补”字即可。 设X1=+1010B,X2=-01010B,试分别写出它们在8位微机中的原码、反码和补码形式。

反码和补码-来自《单片机控制技术及应用》的相关知识

原码、反码和补码是机器数的三种基本形式,它和机器数的真值不同。机器数的真值定义为采用+和-表示的二进制数符号,并非是真正的机器数。例如,+76的机器数真值为+1001100B,原码形式为01001100B(最高位的0表示正数);-76的真值为-1001100B,原码为11001100B(最高位的1表示负数)。

1.原码

原码表示法是机器数的一种简单的表示法。这种表示法数的最高位为符号位(用0或1来表示),其余位为数值位,符号位的0表示该数为正数,符号位为1表示它是负数。通常,一个数的原码可以先把该数用方括号括起来,并在方括号右下角加个“原”字来标记。设有一数为x,则原码表示可记作[x]

【例1-6】 设X1=+1100B,X2=-1100B,请分别写出它们在8位微机中的原码。

解:其原码记为

[X1]=[00001100]

[X2]=[10001100]

原码表示数的范围与二进制位数有关。当用8位二进制来表示小数原码时,其表示范围为

最大值为0.1111111,其真值约为(0.99)D

最小值为1.1111111,其真值约为(-0.99)D

当用8位二进制来表示整数原码时,其表示范围为

最大值为01111111,其真值为(127)D

最小值为11111111,其真值为(-127)D

在原码表示法中,对0有两种表示形式:

[+0]=00000000

[-0]=10000000

2.反码

在微型计算机中,二进制数的反码可由原码得到,有正数的反码和负数的反码之分:正数的反码和原码相同;负数反码的符号位和负数原码的符号位相同,数值位是它的数值位的按位取反。反码的标记方法和原码类似,只要在被括数方括号的右下角添加一个“反”字即可。设有一数为x,则反码表示可记作[x]。(www.xing528.com)

【例1-7】 设X1=+1010110,X2=-1001010,请分别写出它们在8位微机的原码和反码。

解:由于正数的反码就是其原码;负数的反码是符号位不变,数值位是它的数值位的按位取反,所以有

[X1]=01010110

[X1]=[X1]=01010110

[X2]=11001010

[X2]=10110101

反码通常作为求补过程的中间形式,即在一个负数的反码的末位上加1,就得到了该负数的补码。

3.补码

补码的概念是在计算机中经常会遇到的,二进制数的补码可由反码得到,如果是正数,则该机器数的补码与原码一样;如果是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在末位加1而得到的。补码的标记方法和原码、反码类似,只要在被括数方括号的右下角添加一个“补”字即可。设有一数X,则X的补码表示记作[X]

【例1-8】 设X1=+1010B,X2=-01010B,试分别写出它们在8位微机中的原码、反码和补码形式。

解:由原码、反码和补码的定义得

[X1]=00001010B[X2]=10001010B

[X1]=00001010B[X2]=11110101B

[X1]=00001010B[X2]=11110110B

补码的优点是可以将减法运算转换为加法运算,其符号位可以连同数值位一起运算。这样非常有利于计算机的实现。

【例1-9】 45H,-55H,用补码运算的方法求两数之和。

解:[45H]-[-55H]=[-10H]

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

我要反馈