您现在的位置是:首页>文章详情 文章详情 机器数与码制 yangxshn 2022-04-04 1118 各种数据在计算机中表示的形式称为机器数,其特点是采用二进制计数制,数的符号用0、1表示,小数点隐含表示而不占位置。机器数对应的实际数值称为数的真值。 对于带符号数,机器数的最高位是表示正、负的符号位,其余位则表示数值。若约定小数点的位置在机器数的最低数值位之后,则是纯整数;若约定小数点的位置在机器数的最高数值位之前(符号位之后),则是纯小数。无符号数是指全部二进制位均代表数值,没有符号位。 为了便于计算,带符号的机器数可采用原码、反码和补码、移码等不同的编码方式。 1)原码表示 数值`$$X$$`的原码记为`$$[X]_{原}$$`,如果机器字长为`$$ n $$`(即采用`$$n$$`个二进制位表示数据),则最高位是符号位,0表示正号,1表示负号,其余的`$$n-1$$`位表示数值的绝对值。数值0的原码表示有两种形式:`$$ [+0]_{原} = 00000000 $$`,`$$[-0]_{原} = 10000000$$`。 例如:若机器字长`$$n$$`等于8,则(◇表示小数点): `$$[+1]_原=00000001$$` `$$[-1]_原=10000001$$` `$$[+127]_原=01111111$$` `$$[-127]_原=11111111$$` `$$[+45]_原=00101101$$` `$$[-45]_原=10101101$$` `$$[+0.5]_原=0◇1000000$$` `$$[-0.5]_原=1◇1000000$$` 2)反码表示 数值`$$X$$`的反码记作`$$[X]_反$$`,如果机器字长为`$$n$$`,则最高位是符号位,0表示正号,1表示负号,其余的`$$n-1$$`位表示数值。正数的反码和原码相同,负数的反码则是其绝对值按位求反。数值0的反码表示有两种形式:`$$[+0]_反=00000000$$`,`$$[-0]_反=11111111$$`。 例如:若机器字长`$$n$$`等于8,则(◇表示小数点): `$$[+1]_反=00000001$$` `$$[-1]_反=11111110$$` `$$[+127]_反=01111111$$` `$$[-127]_反=10000000$$` `$$[+45]_反=00101101$$` `$$[-45]_反=11010010$$` `$$[+0.5]_反=0◇1000000$$` `$$[-0.5]_反=1◇0111111$$` 3)补码表示 数值`$$X$$`的反码记作`$$[X]_补$$`,如果机器字长为`$$n$$`,则最高位是符号位,0表示正号,1表示负号,其余的`$$n-1$$`位表示数值。正数的补码与其原码和反码相同,负数的补码则等于其反码的末尾加1.在补码表示中,0有唯一的编码:`$$[+0]_补=00000000$$`,`$$[-0]_补=00000000$$`。 例如:若机器字长`$$n$$`等于8,则(◇表示小数点): `$$[+1]_补=00000001$$` `$$[-1]_补=11111111$$` `$$[+127]_补=01111111$$` `$$[-127]_补=10000001$$` `$$[+45]_补=00101101$$` `$$[-45]_补=11010011$$` `$$[+0.5]_补=0◇1000000$$` `$$[-0.5]_补=1◇1000000$$` 相对于原码和反码表示,`$$n$$`位补码表示法有一个例外。当符号位为1而数值位全部为0时,它表示整数`$$-2^{n-1}$$`,即此时符号位的1既表示负数又表示数值。 在设计补码时,有意识地引用了模运算在数理上对符号位的处理,处理模的自动丢弃实现了符号位的自然处理。 用补码表示数时,由于符号位和数值部分一起编码,很难从码值形式直接判断真值的大小。例如:45>-45,而其补码00101101在形式上小于11010011。 3)移码表示 移码表示法是在数`$$X$$`上增加一个偏移量来定义的。常用于表示浮点数中的阶码。如果机器字长为`$$n$$`,在偏移量为`$$2^{n-1}$$`时,只要将补码的符号位取反便可获得相应的移码表示。偏移量也可以是其它值。采用移码表示时,码值大者对应的真值越大。 例如:若机器字长`$$n$$`等于8,则 `$$[+1]_移=10000001$$` `$$[-1]_移=01111111$$` `$$[+127]_移=11111111$$` `$$[-127]_移=00000001$$` `$$[+45]_移=10101101$$` `$$[-45]_移=01010011$$` `$$[+0]_移=10000000$$` `$$[-0]_移=10000000$$`