接地氣系列:認識計算機(2)乘除法原理,小數跟浮點數

本系列儘管接地氣說人話,但是本篇還是相當比較難懂的。看不下去不是你的問題,不要有啥壞想法。

回顧上期,如果說加減法就是0101的累加操作,那乘除法也算累加的變形。減法就是負的累加,乘法就是多次累加,除法是跟乘法相反的,因為除法會有餘數,所以更難解釋也就不細說了,認識計算機的乘除法就好,主要是理解就好,理解萬歲。

接地氣系列:認識計算機(2)乘除法原理,小數跟浮點數

比如這個普通數學乘法,就是加法變形嘛。我用蘋果舉例子。4=2X2,也可以表示成4=2+2。如果換個數,8=2X4,8也等於2+2+2+2,2加四次就是2X4。我們背的99乘法表,就是腦子裡的程式,一個跳過加法直接乘的迴圈。

那我們把數擴大的話,就會有這麼一個結論。一般乘法的話,就是倆乘數如果結果大於10就進位,得出的積,它的位數就是倆乘數的累加。比如5X5=25,25是兩位數,5是一位數。如果倆乘數結果小於10,就不進位,那它們相乘得出的積,就是倆數位數的累加,然後減去1,這個是不是有點繞?比如111X111=12321,三位數X三位數=5位數。反正這個規律都懂,怎麼描述我就不細說了。

接地氣系列:認識計算機(2)乘除法原理,小數跟浮點數

二進位制不是如此。二進位制因為1進一位就是0,所以只要不是任何數乘以1,或者數字小於6(0110),它結果有多長,都是固定的。比如5X5=25,二進位制表示,就是0101X0101=11001是5位長,而6X6=36,二進位制表示就是0110X0110=100100,3位數X3位數=6位數。這就給計算機的位操作有了固定的空間。1個位元組byte是計算機的基本定址空間,可以容納8個bit,就是裡面有8個0或者1的地址。那兩個位元組相乘,存放結果資料的地址肯定是兩個位元組,直接申請2個位元組就絕對夠用了。(

其實單位元組數開頭都是分隔符只有7個bit有效

接地氣系列:認識計算機(2)乘除法原理,小數跟浮點數

那,計算機的乘法計算,就是個在已知長度的地址內的操作二進位制了。跟10進位制乘法一樣,我們可以操作二進位制數位移,然後轉成加法。早期CPU,現在的低端CPU就是如此設計的。當然比這個進位先進些。而除法就是退位了,反過來,就不細說了。

接地氣系列:認識計算機(2)乘除法原理,小數跟浮點數

二進位制的乘法有了,還是相對複雜了些。沒關係,現在的PLC,嵌入式裝置,MP4等等,還是引入了原始的乘法計算器:公式乘法。本質上還是位操作,就是效率大幅度提高了。在高階的桌面CPU裡,還有複雜數的乘除法,PLC,嵌入式,手機等等這種是不具備的,因為乘除法相當耗電。

接地氣系列:認識計算機(2)乘除法原理,小數跟浮點數

而計算機是如何記錄小數點的呢?大家學過科學計數法把?也是類似。因為計算機只有010101,全部都是有理數,或者說白了幾乎都是整數。那小數的結果,要麼取近似值,要麼取近似值的科學計數法。反正,計算機的計算結果完全不精確。計算機甚至沒有小數點的概念。在計算機裡,小數被稱為浮點數。

接地氣系列:認識計算機(2)乘除法原理,小數跟浮點數

為啥很多場景評測,都是說浮點效能呢?因為浮點一般指代的是FP32浮點數,就是32位長的小數,這個近似值可以保留到小數點後32位。同理,FP64可以保留小數點後64位近似值。FP後面的數字越大,表示小數精度越高,但是計算越廢時間,耗電增加。現代CPU裡甚至有AVX256,AVX512,就是把它理解成512位長度的小數計算就好了。也就是在桌面處理器能碰到,手機裡不會有的。

好了,本期結束。看不懂沒關係。省流一下,反正我總結成三句話:

1,計算機本質上沒有乘除法,都是操作二進位制進位退位的加減法;

2,計算機的浮點數就是我們日常用的小數;

3,浮點數只能表示近似值,計算機壓根就沒有真正的小數計算能力。

下一期,說說儲存單元?