[問題] 定點數運算(Q格式)

看板ASM (組合語言)作者 (阿慶)時間14年前 (2010/12/21 20:09), 編輯推噓1(108)
留言9則, 3人參與, 最新討論串1/2 (看更多)
這題可能有點牽涉韌體的範疇,請問一下,如果使用Q格式來做定點數運算,是不是乘上 一個值量化之後,到最後在除上同樣倍數的值除回來就行了?比方說我用Q15的格式來 對0.5做運算,得到的值是4000H,到最後是不是除上2的負15次方就算還原了? 可是要用什麼方法驗證數值有確定轉換成功? ex. signed short i = 0x4000; (假設i是0.5,變成Q15後的值) i = i/32768; 這樣做i就已經視同有轉換過了嗎?還是說我的步驟有錯呢? 懇請指教,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.174.87

12/21 21:59, , 1F
signed short i重複定義 沒有0x4000H這種東西
12/21 21:59, 1F

12/21 22:00, , 2F
signed short i=0x4000; i=i/0x8000; 此時i=0
12/21 22:00, 2F

12/21 22:01, , 3F
問問題請詳細寫出作用 沒頭沒尾的
12/21 22:01, 3F
謝謝大大指點,已修改過 ※ 編輯: scrush 來自: 61.230.197.159 (12/21 22:43)

12/21 23:01, , 4F
仔細看過以後 發現有錯誤處 "signed short"
12/21 23:01, 4F

12/21 23:03, , 5F
-32768 <= signed short <= 32767, 如何除以32768?
12/21 23:03, 5F

12/21 23:57, , 6F
這點我也很懷疑,但我看到別人的作法是這樣沒錯
12/21 23:57, 6F

12/21 23:57, , 7F
我還是在仔細看過好了,謝謝你的回答
12/21 23:57, 7F

12/22 00:38, , 8F
宣告另一個變數(浮點數)就可以了
12/22 00:38, 8F

12/22 00:39, , 9F
float f; f = (float)i/32768.0;
12/22 00:39, 9F
文章代碼(AID): #1D49ZwiQ (ASM)
討論串 (同標題文章)
文章代碼(AID): #1D49ZwiQ (ASM)