2012-03-03 50 views
1

我有一個fx1.15表示法。底層整數值是63183(寄存器值)。定點FX表示法和轉換

現在,根據維基百科的完整長度是15位。價值不適合在裏面,對吧?

因此,假設它是一個fx1.16值,我該如何將它轉換爲人類可讀的值?

回答

1

要將定點值轉換爲人類可讀的值,請將浮點除法值除以2得到小數位數。例如,如果有15位小數位,2^15 = 32768,所以你會使用這樣的:

int x = <fixed-point-value-in-1.15-format> 
printf("x = %g\n", x/32768.0); 

現在將定點數到浮點數和調用printf()是昂貴的操作,他們通常會破壞使用定點獲得的任何性能。我認爲你只是爲了診斷目的而這樣做。另外,請注意,如果您的平臺正在進行定點操作,因爲浮點操作被禁止或不可用,那麼您將不得不按照手動進行十進制轉換的方式做一些不同的操作。將該整數建模爲基礎浮點值乘以32768並從那裏開始。有一些有用的定點代碼here

p.s.我不確定你對這個答案仍然感興趣,ashirk,(我爲其他人寫的更多),但如果你是,歡迎來到Stack Overflow!

+0

thx。很好的解釋。 – ashirk 2012-04-05 20:11:35