9.2.2 数值数据在计算机中的表示
一个用于计算的数据在计算机内的表示形式,称为机器数。
1.整数的表示
1)无符号整数
所有二进制代码都用来表示数值,有8位、16位、32位和64位。
8位二进制代码表示范围00000000到11111111,对应十进制数0到255(28-1)。
2)有符号整数
在计算机中只能用数字表示数的正、负,并规定用“0”表示正号,用“1”表示负号。例如,当用一个字节存储整数时,形式为D7D6D5D4D3D2D1D0。
其中D7是符号位,如(01011010)2应为十进制整数+90,而(11011010)2则应为-90。这样数字和符号都用二进制代码表示,这种表示数的方法称为编码,常用的编码有原码、反码和补码。
(1)原码
原码是机器数的最简单表示方法。其符号位为0表示正数、为1表示负数,其他位是数的绝对值。设有数为X,则原码记作[X]原。例如:
X1=+1100110,则[X1]原=01100110
X2=-1100110,则[X2]原=11100110
(2)反码
机器数的反码可由原码得到。正数的反码与原码相同,负数的反码为原码除符号位外将其余各位按位求反,即1变为0、0变为1。例如:
X1=+1010110,[X1]原=01010110,[X1]反=01010110
X2=-1001010,[X2]原=11001010,[X2]反=10110101
(3)补码
正数的补码与原码相同,负数的补码等于其反码在最低位加1。例如:
[X1]原=01100110,[X1]反=01100110,[X1]补=01100110
[X2]原=11100110,[X2]反=10011001,[X2]补=10011010
【例9.2-15】已知[X]原=10100110,求[X]补=( )。
(A)10100110 (B)01011001 (C)11011001 (D)11011010
答案:(D)。
原码和反码都有两个零,分别是正零和负零。补码只有一个零,同样的字长用补码比原码和反码表示的数值范围大,它能多表示一个数。例如,字长8位表示的数值范围如下:
原码:-127,-126,……,-1,-0,0,1,……,127反码:-127,-126,……,-1,-0,0,1,……,127
补码:-128,-127,-126,……,-1,0,+1,……,127
假定机器字长为16位,符号占1位,数值部分占15位,则采用原码的机器数,其表示范围是:-32767~+32767(215-1);采用补码的机器数,其表示范围是:-32768~+32767(215-1)。
(4)BCD码
BCD码又称二—十进制编码(Binary-CodedDecimal)。
计算机采用二进制,但是二进制不直观,计算机的输入和输出通常用十进制。这样的十进制,可以用二进制编码来表示,BCD码是一种非常直观的编码。
这种编码是把十进制数的每一位分别表示成四位二进制数形式的编码。
例如,十进制数10的BCD码为00010000;825的BCD码为100000100101。
【例9.2-16】十进制数9761的BCD码是( )。
(A)1001011101101 (B)10010111011001
(C)100101110110001 (D)1001011101100001
答案:(D)。
2.实数(浮点数)的表示
在科学计算中多采用浮点数。
任何一个浮点数都可以表示为一个纯小数和一个乘幂之积。如:
38.815=102×(0.38815)
-255.123=103×(-0.255123)
0.00123=10-2×(0.123)
二进制也是这样。如:
1010.01=2100×(0.101001)
-0.00011001=2-011×(-0.11001)
浮点数由两部分组成:一部分是阶码,表示指数;另一部分是尾数,表示有效数字。
浮点数在机器中的形式为:
由尾数部分隐含的小数点位置可知,尾数总是小于1的数字,它给出该浮点数的有效数字。数符指示该浮点数的正负。阶码总是整数,它确定小数点浮动的位数。若阶符为正,则向右移动;若阶符为负,则向左移动。浮点数要求尾数中第1位数不能为零(靠修改阶码保证),这样的数称规格化浮点数。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。