原码、反码和补码是机器数的三种基本形式,它和机器数的真值不同。机器数的真值定义为采用+和-表示的二进制数符号,并非是真正的机器数。例如,+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]补
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。