数据格式(定点表⽰浮点表⽰)计算机常⽤的数据表⽰格式有两种:
定点表⽰:⼩数点位置固定(数值范围有限)
浮点表⽰:⼩数点位置不固定(数值范围很⼤)
定点表⽰
概念:所有数据的⼩数点位置固定不变
表⽰⽅法:符号位+量值(尾数)
特点:
数的范围受字长限制,表⽰数的范围有限;
计算机中多⽤定点纯整数表⽰,所以将定点数表⽰的运算简称为整数运算
分类:理论上⼩数点位置可以任意,但实际上将数据表⽰成如下两种形式
1. 纯⼩数(⼩数点固定在量值最⾼位的左边,即符号位与量值之间)
表⽰范围(量值为n位时):
2. 纯整数(⼩数点固定在量值最低位的右边)
表⽰范围(量值为n位时):
浮点表⽰
概念:⼩数点位置随阶码不同⽽浮动
表⽰⽅法:
核⼼
小数的原码任意⼀个⼆进制数N可以写成 (如同任意⼀个⼗进制数N可以写成 )
其中 是浮点数的指数, 是浮点数的尾数,两者都是有符号的
指数= 阶符+阶码
尾数= 数符+尾数
机器中的表⽰(早期的计算机中)
阶符+阶码+数符+尾数
IEEE754标准(规定了浮点数的表⽰格式,运算规则等)
基数2是固定常数,故可不表⽰出来
尾数⽤原码,但指数⽤移码(便于对阶和⽐较,不需要判断符号位),指数的阶符被隐含在移码⾥⾯,故可不表⽰出来
浮点数的规格化表⽰: 当尾数的值不为0时,尾数域的最⾼有效位应为1(类似于0.011强制要求⽤表⽰),⼜因为最⾼位固定为1,即尾数域表⽰的值是1.M,故最⾼位的1也不予存储.
要除去E⽤全0和全1表⽰零和⽆穷⼤的情况,如本来是0~255则变成1~254
单精度(32位)
S是数的符号位,1位,在最⾼位,“0”表⽰正数,“1”表⽰负数
尾数⽤原码表⽰,故符号规则同原码
M是尾数, 23位,在低位部分,采⽤纯⼩数表⽰
注意这⾥是规格化表⽰的,即23位字段实际存储24位有效数
E是阶码,8位,采⽤移码表⽰。
真值e变为阶码E时加上固定的偏移量127,即
移码⽐较⼤⼩⽅便,表⽰范围从-126~+127移动到1~254
双精度(64位)
S是数的符号位,1位,在最⾼位,“0”表⽰正数,“1”表⽰负数
尾数⽤原码表⽰,故符号规则同原码
M是尾数, 52位,在低位部分,采⽤纯⼩数表⽰
注意这⾥是规格化表⽰的,即52位字段实际存储53位有效数
E是阶码,11位,采⽤移码表⽰。
真值e变为阶码E时加上固定的偏移量1023,即
移码⽐较⼤⼩⽅便,表⽰范围从-1022~+1023移动到1~2046
表⽰范围
单精度(32位)指数单精度(32位)尾数双精度(64位)指数双精度(64位)尾数表⽰的对象00000(结合符号位有正零和负零之分) 0⾮00⾮0正负规格化数1~254任意数1~2046任意数正负浮点数
255020470正负⽆穷
255⾮02047⾮0不是⼀个数(NaN)
例1(⼗进制数转浮点数)
⼗进制数 转换成 754标准的浮点数(32位)的⼆进制存储格式
1. 分别将整数和分数部分转换成⼆进制数
2. 移动⼩数点,使其在第1,2位之间(格式化浮点数,⼩数点在最⾼位的1后)
3. 由真值e加偏移量(32位为127,64位为1023)得阶码E
4. 得32位浮点数的⼆进制存储格式(不满32位后⾯要补0)
0100 0001 1010 0100 1100 0000 0000 0000=
例2(浮点数转⼗进制数)
754标准存储格式为的浮点数 转 ⼗进制数
1. 将数展开,⽤⼆进制格式表⽰
得,0 100 00010 011 0110 0000 0000 0000 0000
2. 根据对应位置,得
尾数补回隐藏位1,得
故⼗进制数为