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語言裡,注意,說...