浮点数在计算机中的表示就好像我们现实中使用的科学计数法一样。
当你的机器硬件为用定点表示小数时,那么小数位就固定了,当使用浮点小数
时,那么小数位就不固定。例如:
3.5:用定点表示法,小数点定在D8位上(这个位由机器硬件决定)则32位表示的二进制数为0000
0000
0000
0000
0000
0011
.0000
0101,那个小数点是我加上的,看到了,小数点前面的数是十进制的3,小数点后面的数是十进制的5.
如果采用的是浮点表示法,则
N=M×R^E
,在这里,N、M、R、E都是十进制数,其中N为实际要表示的数,M称为尾数,R称为基数,E称为指数。R的取值是固定的2。M与E的值是由机器硬件本身决定的。如果硬件定义M值占24位,E值占8位,那么这个32位表示的数就是
N=M×2^E
;3.5如用科学计数法表示为3.5
=
0.35
*
10^1,同样可以把3.5变为
M
*
2^E的形式,这里M与E为十进制数的二进制数表示,变完后,就M放入高24位中,把E放低八位中。
你的问题中说到,十进制怎么能与二进制相乘。这个是可以的,他们都是数字为什么不能乘。只是表达的形式不一样而已。
在初中(确切的说是在初一)就学过了科学记数法:N = ± 绝对值 × 10^n。
其中的绝对值是由:1 位整数、多位小数组成。 n 是以 10 为底的幂的指数。
利用科学计数法,可以很方便地表示一些绝对值较大或较小的数。但是,由于绝对值的位数往往是有限的,所以精度也是有限的。如果你记不得这些了,就赶紧回去温习一下中学的课本吧。
把科学记数法落实到计算机中,就被计算机大佬改名为:浮点数。
IEEE754 则是一种通用的浮点数存储格式,形如:S、E、M。
S 是符号位。E = n + 偏移量,称为阶码。M 是绝对值的小数部分,所以称为尾数。
浮点数所代表的真值为:N = (-1)^S × (1.M) × 2^(E-偏移量)。
利用浮点数的存储格式,就可以在很少的存储空间中,存储绝对值较大或较小的真值。但是,由于绝对值的位数是有限的,所以,浮点数的精度也是有限的。
-------------------------
其实,浮点数方面的内容,只是一个“编码/解码”的方法而已,或者说是:加密/解密。这些应该属于“算法”的范畴。
算法,和《计算机组成》并没有任何关系,和《计算机原理》就更没有关系了。
所以,在《计算机组成原理》课程中讲浮点数,纯粹就是在瞎掰!
作为《组成原理》这门课程,还是应该详细介绍【计算机的组成和原理】。简单的如:键盘的组成是什么?鼠标的原理是什么? 还有:打印机、扫描仪、扬声器、摄像头。。。