也難怪瓊不知道。
浮點運算這東西是在計算機發展一段時間後才針對有限儲存空間提高其靈活性和運算範圍發明出來的。
此時的瓊還有遠在日不落的圖靈,他們雖然有足夠的智商發明這種運算,但此時他們的注意力主要集中在“克里斯托弗”本身,而且主要針對其解碼方面的用途,於是就沒有考慮到這一點。
“這麼說吧!”王學新帶著幾個人來到防空洞門邊的辦公桌前,拿過桌上的紙和筆一邊寫著一邊解釋道:“如果我們使用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,那就不需要浪費一個空間把它存進儲存單元裡,於是就省下了一個儲存單元做到了儲存單元最大化利用。