2015-06-21 141 views
0

我需要將X與浮點數相乘,因爲我在處理器中沒有浮點運算。我瞭解該方法,但不知道爲何存在該方法?正常乘法的定點乘法

假設我們要乘2 * 4.5十進制我做如下: 2 * 4.5(100.1) 所以我乘以2 * 1001 = 2 * 9 = 18,然後通過1 所以18右移> > 1 = 9

是不是我們在固定點代表2,代表固定點4.5,我們乘以Q1.1和Q1.1格式,所以我們得到Q2.2格式,我們做右移導致Q1。 1格式的結果。是這樣嗎?

回答

2

在小數,您定點例子其實是:

2 * 4.5 
2 * 45 (after multiplying by 10) = 90 
90/10 = 9 (after dividing the 10 back out) 

在二進制中,同樣的事情正在做,只是用2代替的10次冪的權力(如因素/除數) 。在適當的乘法之後,定點運算髮生在純積分空間中。乘以或除以2的冪在二進制數上分別是左移或右移(對於CPU非常快)。在固定點上,小數點左邊(整數)和右邊(小數)的位數是固定的(預定的),這意味着某些數字不能在不失真的情況下在刻度上表示。

浮點進一步擴展了概念,允許分配給小數點左側和右側的位數是靈活的。在浮點數中,每個數字都被表示爲指定功率(例如2的冪)的整數「有效數」(或尾數)。該表示允許在更大的動態範圍內保持相同數量的有效數字(對於非常小或非常大的數量級)。對於浮點數,大部分位將被分配給尾數的有效數字,而少數位則被分配給功率數字。浮點計算比定點更昂貴(時間上),這就是爲什麼定點在微控制器和嵌入式系統中仍然很流行的原因。

如果我沒有回答您的問題,請詳細說明,我將編輯此答案以包含您所需的信息。

+0

我從你的解釋中得到了我正在尋找的答案。基本上我們用二進制來模擬整數乘法。 所以2 * 4.5 = 10 * 100.1 = 2 * 9然後除以2. 除以2的原因是.1表示爲2 ^( - 1) –