浮點數對微控制器的速度影響很大麼

2021-03-03 21:37:17 字數 1686 閱讀 2780

1樓:申稅炸蛋

一般來說,普bai通微控制器都不du具備硬體浮點數運zhi算功能,也就是說單

dao片機實回際上是不直接支援

答浮點數的資料型別的資料的,浮點數主要通過編譯器來軟實現,浮點數精度和長度與編譯器有關,一般有用32位(單精度)和64位資料(雙精度)以科學計數法來表示一個浮點數,具體可參考浮點數表示方式。而普通微控制器通常是8位或16位,要將這32位資料處理為一個浮點數,中間的運算過程可想而知有多大。舉個列子吧,51微控制器用keil編譯器每增加一次浮點數運算**增加約有幾十到上百byte。

執行速度當然就慢下來了。

51微控制器通常如何輸入浮點數?

2樓:

微控制器處理浮點數效率不高,一般是浮點數乘以10的n次方變成整數進行計算等處理,在輸出的時專候屬再次處理小數點。比如,你輸入的是1234.567,1234儲存到2個unsigned char型變數裡面,567儲存到2個unsigned char型變數裡面,如果是有符號浮點數,可以把符號單獨儲存到一個unsigned char裡面,計算的時候所有的數都乘以1000,輸出的時候單獨輸出整數部分和小數部分。

3樓:匿名使用者

你可以直接輸入

到double裡面,double input = 0;當沒輸入小數點專之前時input = input * 10 + keynumber,輸入小數點後的要記屬錄小數點後輸入幾位了char count;input = input + keynumber/10^count,10的count次方要寫成函式。注意記錄刪除鍵和上一次的輸入值

4樓:蓴灬叔

一般是浮點數來乘以10的n次方變成整源數進行計算等處bai理,在輸du出的時候再次處理小數點。比zhi

如,dao輸入的是1234.567,1234儲存到2個unsigned char型變數裡面,567儲存到2個unsigned char型變數裡面,如果是有符號浮點數,可以把符號單獨儲存到一個unsigned char裡面,計算的時候所有的數都乘以1000,輸出的時候單獨輸出整數部分和小數部分。

51微控制器是對所有相容intel 8031指令系統的微控制器的統稱。該系列微控制器的始祖是intel的8031微控制器,後來隨著flash rom技術的發展,8031微控制器取得了長足的進展,成為應用最廣泛的8位微控制器之一,其代表型號是atmel公司的at89系列,它廣泛應用於工業測控系統之中。很多公司都有51系列的相容機型推出,今後很長的一段時間內將佔有大量市場。

51微控制器是基礎入門的一個微控制器,還是應用最廣泛的一種。需要注意的是52系列的微控制器一般不具備自程式設計能力。

5樓:做而論道

51微控制器,通常不用輸入浮點數。

51微控制器能不能計算浮點數,支不支援浮點運算?有人說能,有人說不能。

6樓:匿名使用者

不能直接硬體計算浮點(就是所謂的fpu),只能通過程式庫(呼叫函式)模擬完成,非常耗時!

7樓:匿名使用者

c51做浮點運算,**量大,你可編譯一段程式看看。

c51中有關於浮點運算的函式,可以用,**量大一點。

能避免浮點運算就避免吧,或者在程式中用別的辦法處理,比如查表什麼的。

8樓:匿名使用者

可以但是不準確1等於0.99998的情況都有

浮點數的表示範圍,浮點數所能表示的數值範圍和精度取決於什麼

最常用的32位規格化浮點數的表示範圍是 前提條件 階碼用移碼錶示,尾數用補碼錶示,每1位是符號位,階碼佔8位,尾數佔23位 可表示的最大正數 1 2 23 2 127最小正數 2 129 最大負數 2 129 最小負數 2 127 呵呵,不同的編譯環境下,浮點數的範圍是不同的 目前多數系統都按照ie...

為什麼說有的浮點數無法精確的表示

比如儲存10進位制0.1,為什麼無法保證每一臺機子對其儲存的值不一樣呢?0.10.2 0 0.2 0.4 0 0.4 0.8 0 0.8 1.6 1 0.6 1.2 1 0.2 0.4 0 0.4 0.8 0 0.8 1.6 1 0.6 1.2 1 0.2 二進位制 0.0001 1001 1001...

浮點數所能表示的數值範圍和精度撒於什麼

浮點數所能表示的數值範圍和精度取決於階碼和尾數。階碼 採用指數的實際值加上固定的偏移值的辦法表示浮點數的指數,好處是可以用長度為 個位元的無符號整數來表示所有的指數取值,這使得兩個浮點數的指數大小的比較更為容易,實際上可以按照字典序比較兩個浮點表示的大小。這種移碼錶示的指數部分,中文稱作階碼。定點數...