(二)数值信息在计算机内的表示
1.整数(定点数)的表示
整数不使用小数点,所以它也叫做“定点数”。计算机中的整数分为两类:不带符号的整数(Unsigned Integer),带符号的整数(Signed Integer)。
不带符号的整数常用于表示地址等正整数,它们可以是8位、16位甚至32位。8个二进位表示的正整数其取值范是0~255(2 8 -1),16个二进位表示的正整数其取值范是0~65535(2 16 -1),32个二进位表示的正整数其取值范是0~2 32 -1。
带符号的整数必须使用一个二进位作为其符号位,一般总是最高位(最左面的一位),“0”表示“+”(正数),“1”表示“-”(负数),其余各位则用来表示数值的大小。
为了内部运算处理方便,负整数在计算机内不止一种表示方法。上面的表示法称为“原码”,另外的两种方法分别叫做“反码”和“补码”。
负数使用反码表示时,符号位仍为“1”,但绝对值部分却正好与原码相反(“0”变为“1”,“1”变为“0”)。
负数使用补码表示时,符号位也是“1”,但绝对值部分却是反码的个位加“1”后所得到的结果。注意:正整数无论采用原码、反码还是补码表示,其编码都是相同的,并无区别。
还有一种整数也经常在计算机内使用,称为“二进制编码的十进制”整数(Binary Coded Decimal,简称BCD整数),它使用4个二进位表示1个十进制数字,符号的表示仍与上相同。
2.实数(浮点数)的表示
实数也叫浮点数,因为它的小数点位置不固定。
一个实数总可以表达成一个纯小数和一个乘幂之积。
任意一个实数,在计算机内部都可以用“指数”(这是整数)和“尾数”(这是纯小数)来表示,这种用指数和尾数表示实数的方法叫做“浮点表示法”。所以,在计算机中实数也叫做“浮点数”,而整数则叫做“定点数”。
由于指数可以选用不同的编码(原码、补码等),尾数的格式和小数点位置也可以有不同规定,因此,浮点数的表示方法不是惟一的。不同计算机可以有不同的规定,这就引起了相互间数据格式的不兼容性。为此,美国电气与电子工程师协会(IEEE)制订了有关浮点数表示的工业标准IEEE754,已被当代所有各类处理器采用。
浮点数的长度可以是32位、64位甚至更长,位数越多,可表示的数值的范围越大,精度也越高。
(三)整数的性质和运算
1.整数补码表示的数学意义
无符号二进制整数的原码,其编码与数值之间的关系如下。
设K n Kn-1 …K1 K0是一个无符号二进制整数,S是它相应的十进制数值,则
S=Kn ×2 n +Kn-1 ×2n-1 +…+K1 ×21 +K0 ×2 0
其中的Kj(j=n,n-1,…1,0)只能为0或1,Kn 是最高位,K0 是最低位(个位)。
Kn Kn-1 …K1 K0 用来表示带符号整数时,Kn 是符号位,Kn-1 …K1 K0 则为数值位。若Kn Kn-1 …K1 K0 表示的是原码编码的整数,则十进制数值S与编码的关系是:
S=Kn-1 ×2n-1 +…+K1×2 1 +K0 ×2 0 (当Kn =0)
S=-(Kn-1 ×2 n-1 +…+K 1 ×2 1 +K0 ×20 )
(当Kn =1)
但是,如果Kn n-1 …K1 K0 表示的是补码编码的整数时,不论符号位K n 如何,十进制数值S与编码的关系可以统一地表示成为:
S=Kn ×(-2n )+Kn-1 ×2n-1 +…+K1 ×21 +K0 ×20 采用补码表示的n位二进制带符号整数的有效范围是: -2n-1 ≤S≤2n-1 -1
计算机在整数运算过程中,若结果超出此允许范围,则称为发生“溢出”。
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |