今天又想起一個之前面試時被問的問題:
c#中浮點數在計算機中的儲存方式
float 單精度浮點數,數據佔用32bit
double 雙精度浮點數,數據佔用64bit
分配內存時float遵從IEEE R32.24,double遵從R64.53
二者在存儲中分爲3部分:
1.符號位
2.指數位
3.尾數部分
float:1位符號位,8位指數位,23位尾數,即指數範圍爲-127~128,小數部分4bit能精確十進制中1位小數點,所以尾數能精確到小數點後6位。
double:1位符號位,11位指數位,52位尾數
例如:6.25 轉二進制爲110.01,寫成指數表達式爲1.1001xMath.Power(2, 2),指數位爲127 + 2 = 129,即10000001,
尾數爲100 1000 0000 0000 0000 0000,符號位爲0,
即在內存中爲 0 10000001 100 1000 0000 0000 0000 0000
另外今天還複習了一下矩陣的乘法和行列式,發現自己真的是把線性代數忘得一乾二淨。。。
行列式
(2月1日修正圖片矩陣乘法,之前將中括號寫成了雙豎線是錯誤的,雙豎線表示的是行列式)