1.讲解
1.1 浮点数
浮点数:类似科学计数法那种就是浮点数。做运算时,小数点位置可以变化(反正都表示这个数)。
1.2 如何对阶
何为对阶?
0.1112×10⁴,那它的阶码就是4
0.9821×10⁶,它的阶码是6
0.1112×10⁴+0.9821×10⁶如何计算?
首先把阶码对好。那么是10⁴去对10⁶还是反过来?
首先浮点表示法中尾数是纯小数,是小于1的
10⁶去对10⁴时,
0.9821×10⁶=98.21×10⁴,98被舍弃,就变成了0.21×10⁴
损失了多少?原先是982100,现在是2100,损失980000,悲不悲惨?壮不壮烈?
但要是小阶对大阶,0.1112×10⁴=0.0011×10⁶,损失多少?原来1112,现在1100,也就12,相比大阶对小阶损失980000,谁好谁劣一目了然。
因此对阶都是小阶对大阶,损失低位数。
1.3规范化浮点数范围
浮点数的范围由阶码决定,精度由尾数决定。
解释一下这个最大正数和最小负数
n位移码可表示的最大值2ⁿ⁻¹-1
n位补码浮点数的最小值是-1,最大值是1-2⁻﹙ⁿ⁻¹﹚
2.写题
1
首先,写题我是反对死记公式的(因为我自己记不住)。所以这题我一步步推理。
求尾数和阶码。
阶码容易求,直接求它的最大值就行。负数乘以最大阶码获得最小的负数,正数乘以最大阶码获得最大的正数。
阶符一位,求阶码最大值,阶符当然就是正了。
阶码值6位,那么阶码值最大值为1 1 1 1 1 1也就是2⁶-1=63
所以阶码为2⁶³
求尾数,数符1位,那么最小值负数为-1,补码的浮点数的最小值都是-1。
尾数最大值,尾数数符1位为正,尾数8位,所以尾数最大值为1-2⁻⁸
因此该浮点数所能表示的数值范围是B
2
(3)
B记一下
C错了,因为规格化是指将尾数的绝对值限定在[+0.5,1)。这里有的人说左闭右开有的人说左闭右闭。个人赞同前者。
(4)
选D
3
阶码变大,数的范围变大。尾数位数变少,精度下降。选A
4
小数点是隐含存在的,不需要占用存储位。选B
5
n位,其实就是每一位都有2种选择,0或1。所以补码和移码n位可表示2ⁿ个不同的有符号定点小数。
而原码和反码就只能表示2ⁿ-1个数,因为它们有两个编码都表示0。
这里提一嘴,小数里的个数千万别用最大值减最小值加一。给你举个例子。-1到0.5有多少个数字。
0.5-(-1)+1=2.5,那不是扯吗,本来小数就表示不了个数。2.5个人吗?再者小数的精度没完没了,可以说-1到0.5有无数个数字,没有标准,从何算起。
因此最大值减最小值加一这个只适用于整数。
可别憨憨地就用这个表的定点小数范围去算了。
6
闭眼选B
7
闭眼选D,原理我上面讲了。
8
阶码以补码表示,补码的补码等于原码。10001的补码等于11111,也就是-15
所以阶码为2⁻¹⁵
尾数,符号位表示为正,数值位有是尾数数值位的最后一位为1,所以是2⁻¹⁰
所以选B