51微控制器C語言二進位制與十進位制能直接運算嗎

2021-05-12 01:11:36 字數 1509 閱讀 5484

1樓:匿名使用者

對微控制器來說,不管任何進位制的數字,在微控制器內部都是二進位制表示的。所以能直接運算。

但是微控制器計算浮點數是非常耗時的,因此要優化演算法,比如你的乘以0.0625等價於除以16(1÷16=0.0625),而除以16等價於算數右移4位,這樣的運算比直接乘以0.

0625快幾十倍。

2樓:匿名使用者

以上的能是能算,但是,最後看你結果的變數取的是什麼型別的變數,如果是整,那麼結果如果有小數就不會計入,如果是取浮點,那就能保留小數 ,不如你先把後面的數先放大10000倍,做好結果後,再把結果除以10000,直接輸出就完事。做ad時,我常用的辦法。不用引出浮點計算。

3樓:匿名使用者

沒問題,可以的。至於樓上說的浮點計算耗時的問題,其實這都是在教材裡說得,說的都是80年代的情況,那時的微控制器執行速度確實困難;現在的微控制器不但速度快,而且資源豐富,基本上不用你去過多得考慮效率的問題了。 真要考慮的話,你也可以直接*625就可以了,你自己知道結果是擴大了1w倍就好了。

c語言中十進位制數和十六進位制數能直接運算嗎

4樓:小夏在深圳

c語言程式中,十進位制和十六進位制實際是互通的。

十六進位制數由數字0~9、字母a~f(或a~f)組成。把十六進位制數按權、相加即得十進位制數。

現實中十六進位制數和十進位制數不可以直接相加,如是在電腦上的話是可以的,何種進位制數在電腦上都是以二進位制的形式表示的,在電腦編寫程式時是可以相加的。

十進位制數除base取餘法,即十進位制數除以base,餘數為權位上的數,得到的商值繼續除以base,依此步驟繼續向下運算直到商為0為止。

擴充套件資料

十六進位制轉十進位制的源**如下:

#include

#include

int main(void)

hex[j]='\0';

printf("hexadecimal string: ");

puts(hex);

/* 十六進位制轉十進位制 */

num=0;

for(i=0;hex[i]!='\0';i++)

return 0;}

5樓:

可以。一個整型變數可以是十進位制,也可以是十六進位制,只是表示方法不同罷了。至於運算結果,你想輸出十進位制就輸出十進位制,想輸出十六進位制就輸出十六進位制,標準輸出函式printf()有這個功能。

6樓:

能,所有數的進位制對你來說可能感覺不一樣,但計算機認為是一樣的,都是2進位制。

11 = 0x0b = 0000 10110x04 = 0000 0100+————————————

0000 1111

=0x0f = 15

產生的還是2進位制。至於認為他是10進位制的15還是16進位制的0x0f 還是8進位制的0017 隨你

c語言十進位制轉二進位制,C語言十進位制轉二進位制

十進位制轉二進位制可以使用庫函式itoa。itoa函式原型 char itoa int value,char string,int radix 功能 將任意型別的數字轉換為字串。在中與之有相反功能的函式是atoi。nt value 被轉換的整數,char string 轉換後儲存的字元陣列,int ...

二進位制和十進位制是什麼,十進位制與二進位制有什麼區別?

二進位制就是逢二進一也就是說每個位的最大值為1例如 100,101,111都是二進位制分別代表十進位制的4,5,7十進位制就是逢十進一也就是說每個位的最大值是9例如 99,88,79等 總結 n進位制就是每個位的最大值為x 1 兩種計數的方式 十進位制和二進位制到底有什麼區別?十進位制與二進位制有什...

c語言裡,八進位制,十六進位制,二進位制,十進位制怎麼互

n進位制轉 baim進位制,10進製表示,n,m均小 du於10 如果大zhi於10需要 dao特殊處回理,需要使用字串來答 輔助處理了 int convertnumber int x,int n,int m z 0 nn 1 while y return z void main c語言裡,注意,說...