浮点数据如何用二进制表示的?
做而论道_CS:
浮点数是什么?
浮点数,就是计算机中 “科学记数法”。
上过初一的,都知道科学记数法:
N = ± 绝对值 × 10^e。
绝对值,当然是正数,由一位整数、多位小数组成。
e 则是以 10 为底的指数。
将此法,引入到计算机中,就是 “浮点数” 了。
N 以浮点数存放的格式是:
N = (-1)^S × 2^E × (1.) M。
S,代表了 N 的符号。
后面的 E,称为阶码,其值为:指数 e + 127。
最后的 (1.) M,就是绝对值,整数部分的 1 被省略了。
在这个 M 中,并没有符号位,所以,它只是一个无符号数。
因此,就不要扯什么 “原码” 了。
把你初一学的 “科学记数法” 中的 “绝对值、指数 e”,
拿过来换算一下,就是计算机中的 “浮点数” 了。
浮点数的运算:
相加减,要先对阶,再用绝对值的补码加减。
相乘除,就是绝对值相乘除、阶码相加减。
得出了运算的结果后,还需要整理成规范的形式。
其实,计算机中的浮点数运算,是由 “浮点机” 实现的。
(什么是定点机、浮点机? 你可别说不知道啊!)
诸如:对阶、上下溢、规格化...,都是由硬件自动完成的。
这些事,也不需要你来编写程序。
硬件的原理,及其设计,就由 “电子信息专业” 去干吧。
计算机专业的老师,就不要在这里哗众取宠了。
计算机专业的学生,学了这些,也是 P 用都没有的。
学上半年,也不过是隔靴搔痒而已。
计算机专业,了解一点 “定点数、补码” 就行了。
对于那些没上过初中又想冒充高雅的人,学就学吧。
当然,即使学明白了,也没有什么用处。
|