☆机器数
在计算机中,因为只有“0”和“1”两种形式,所以数的正、负号,也必须以“0”和“1”表示。通常把一个数的最高位定义为符号位,用0表示正,1表示负,称为数符;其余位仍表示数值。把在机器内存放的正、负号数码化的数称为机器数,把机器外部正、负号表示的数称为真值数。例如:真值为(-00101100)B的机器数为10101100,存放在机器中,如图1.2.1所示。
图1.2.1 机器数
要注意的是,机器数表示的范围受到字长和数据的类型的限制。字长和数据类型定了,机器数能表示的数值范围也就定了。例如,表示一个整数,字长为8位,则最大的正数01111111,最高位为符号位,即最大值为127。若数值超出127,就要“溢出”。
☆数的定点和浮点表示
计算机内表示的数主要分成定点小数、定点整数与浮点数三种类型。
1)定点小数是指小数点准确固定在数据某一个位置上的小数。一般把小数点固定在最高数据位的左边,小数点前边再设一位符号位。按此规则,任何一个小数都可以写成:
N=NsN-1N-2N-3...N-m,
Ns——符号位
即在计算机中用m+1个二进制位表示一个小数,最高(最左)一个二进制位表示符号(如用0表示正号,则1就表示负号),后面的m个二进制位表示该小数的数值。小数点不用明确表示出来,因为它总是定位在符号位与最高数值位之间。对用m+1个二进制位表示的小数来说,其值的范围:|N|≤1-2m。定点小数表示法主要用在早期的计算机中。
2)整数的表示法
整数所表示的数据的最小单位为1, 可以认为它是小数点定在数值最低位右面的一种表示法。整数分为带符号和不带符号两类。对带符号的整数,符号位放在最高位。可以写成:
N=NsNnNn-1Nn-2...N2N1N0
Ns——符号位
对于用n+1位二进制位表示的带符号整数,其值的范围为:|N|≤2n-1。
对于不带符号的整数,所有的n+1个二进制位均看成数值,此时数值表示范围为:0≤N≤2n+1-1。在计算机中,一般用8位、16位和32位等表示数据。一般定点数表示的范围和精度都较小,在数值计算时,大多数采用浮点数。
3)浮点数的表示方法
浮点表示法对应于科学(指数)计数法,如数110.011可表示为
N=110.011=1.10011*2+10=11001.1*2-10=0.110011*2+11
在计算机机中一个浮点数由两部分构成:阶码和尾数,阶码是指数,尾数是纯小数。其存储格式如图1.2.2所示。
图1.2.2 浮点数存储格式
阶码只能是一个带符号的整数,它用来指示尾数中的小数点应当向左或向右移动的位数,阶码本身的小数点约定在阶码最右面。尾数表示数值的有效数字,其本身的小数点约定在数符和尾数之间。在浮点数表示中,数符和阶符都各占一位,阶码的位数随数值表示的范围而定。
例如:设尾数为4位,阶码为2位,则二进制数N=211*1011的浮点数表示形式为
应当注意:浮点数的正、负是由尾数的数符确定,而阶码的正、负只决定小数点的位置,即决定浮点数的绝对值大小。
☆带符号数的表示
在计算机中,带符号数可以用不同方法表示,常用的有原码、反码和补码。
1)原码
数X的原码记为[X]原,如果机器字长n,则原码的定义如下:
例如:当机器字长n=8时:
[+1]原=00000001,[-1]原=10000001 [+127]原=01111111,[-127]原=11111111
由此可以看出,在原码表示法中:
(1)最高位为符号位,正数为0,负数为1,其余n-1位表示数的绝对值。
(2)在原码表示中,零有两种表示形式,即: [+0]=00000000,[-0]=10000000。
2)反码
数X的反码记作[X]反,如机器字长为n,反码定义如下:
例如:当机器字长n=8时:
[+1]反=00000001,[-1]反=11111110 [+127]反=01111111,[-127]反=10000000
由此看出,在反码表示中:
(1)正数的反码与原码相同,负数的反码只需将其对应的正数按位求反即可得到。
(2)机器数最高位符号位,0代表正号,1代表负号。
3)补码
数X的补码记作[X]补,当机器字长为n时,补码的定义如下:
例如:当机器字长n=8时,
[+1]补=00000001,[-1]补=11111111 [+127]补=01111111,[-127]补=10000001
由此看出,在补码表示中:
(1)正数的补码与原码、反码相同,负数的补码等于它的反码加1。
(2)机器数最高位是符号位,0代表正号,1代表负号。
(3)在补码表示中,0有唯一的编码:[+0]补=[-0]补=00000000。
补码的运算方便,二进制的减法可用补码的加法实现,使用较广泛。
|