也难怪琼不知道。
浮点运算这东西是在计算机发展一段时间后才针对有限存储空间提高其灵活性和运算范围发明出来的。
此时的琼还有远在日不落的图灵,他们虽然有足够的智商发明这种运算,但此时他们的注意力主要集中在“克里斯托弗”本身,而且主要针对其解码方面的用途,於是就没有考虑到这一点。
“这么说吧!”王学新带着几个人来到防空洞门边的办公桌前,拿过桌上的纸和笔一边写着一边解释道:“如果我们使用16位运算带小数的数据,按常规的运算方式应该是将一半的存储单元也就是7位配给整数,另8位分配给小数,对吗?”
“没错!”琼点了点头。
之所以整数位只有7位,是因为数据通常有正有负,要空出一位表示正负(0表示正,1表示负),这一位也被称作是符号位。
“这样的存储法很多时候会出现空间和时间的浪费!”王学新接着说道:“它的整数位固定只有7位小数位固定只有8位,如果有个数据是123456678,虽然它只有8位数而我们的存储单元有16个,但却存不下这个数字!”
这是因为整数位只有7位的原因,所以一个八位数已经超出它的储存范围了,尽管小数位的8个储存单元一个数字都没存。
同理,如果整数位一个数字都没有,小数位却在第九位上,也无法有效储存进行运算。
琼点头道:“这就是我想说的,我们应该要扩展到32个存储单元,之前用机械零件要做到这一点很困难,现在改用继电器做零件了,同样的条件完全能实现32位为什么不做?”
“等等,琼!”王学新说:“你先听我说完!”
琼点了下头然后就不说话了。
王学新接着说道:“这是传统的储存方式,我们姑且把它称作定点运算。浮点运算的意思是,我们把其中几位,比如四位用来存储次方……”
“存储次方?”琼吃惊的望向王学新:“但它们通常没有次方!”
陈班两人也疑惑不解,他们不明白这样转换会有什么用。
王学新举了个例子:“比如刚才的数据12345678,我们为什么不能把它变成1.23456678乘以10的7次方?然后我们的整数和小数的存储空间就可以随意利用,简单的说,就是小数没有用到的存储空间就可以用这方法变换到整数利用,整数没有用到的存储空间可以变换到小数去利用!”
琼听着不由恍然大悟。
“说得对,团长同志!”琼说:“这样一来,任何时候我们的存储空间都有11位,可以存下任何一个11位数而不是定点运算的7位整位或8位小数。”
“是的!”王学新点了点头,说:“实际上,如果把它转换为二进制并把所有的数字都转换成1.XXXX的形式并只存小数点后的数字的话,我们还可以多存一位也就是12位!”
这有点难理解。
之所以能多存一位,是因为二进制中的数字不是0就是1,而第一位永远都是1……第一位如果是0的话就不需要写出来了,就像十进制里的一个整数前面不可能有零一样。
如果第一位永远是1,那就不需要浪费一个空间把它存进存储单元里,於是就省下了一个存储单元做到了存储单元最大化利用。