浮點運算就是實數運算,因為計算機只能存儲整數,所以實數都是約數,這樣浮點運算是很慢的而且會有誤差。
大多數機器都是32位的,也就是說32位都用來表示整數的話,那麼對於無符號整數就是0 到 2^32-1,對於有符號的話就是-2^31 到 2^31-1。
浮點數的表示
m 是尾數,為±d.dddddd 其中第一位必須非0
b 是基數,
下面,讓我們回到一開始的問題:為什麼0x00000009還原成浮點數,就成了0.000000?
首先,將0x00000009拆分,得到第一位符號位s=0,後面8位的指數E=00000000,最後23位的有效數字M=000 0000 0000 0000 0000 1001。
由於指數E全為0,所以符合上一節的第二種情況。因此,浮點數V就寫成:
V=(-1)^0×0.00000000000000000001001×2^(-126)=1.001×2^(-146)
· 整數和(和AND/ OR/ XOR)與乘積花費的時間相同,除法(和取模)的速度慢三倍。
· 浮點數的乘積比求和的乘積慢兩倍,除法的乘積甚至更慢。
· 在相同數據大小下,浮點運算始終比整數運算慢。
· 越小越快。
· 64位整數精度確實很慢。
· 浮點數32位總和比64位快,但在乘積和除法上卻不是。
· 80和128位精度僅在絕對必要時才應使用,它們非常慢。