C語言基礎筆記整理

1、關於進制的轉換 

小數部分二進制變成十進制的公式:
......an*2^n+a(n-1)*2^(n-1)+......a3*2^3+a2*2^2+a1*2+a0+a(-1)*2^(-1)+a(-2)*2^(-2)+..........
實質就是小數部分就是2的負幾次方
例如: 111.1變成十進制是

=2^2+2+1+2(-1)
=4+2+1+0.5
=7.5
反之,十進制轉換成二進制,則將小數部分乘以2,取其整數部分,直到乘以2之後是一個純整數,如2.0,但也有乘不完的,就要看取多少精度了。
比如:10.23 轉化成二進制是2^3+2^1+小數部分,小數部分0.23*2=0.46 --> 0.46*2=0.92 --> 0.92*2=1.84 --> 0.84*2=1.68 --> 0.68*2=1.36,取其整數部分,就是00111,精度四位就是1010.00111;

其他進制的轉換都可轉換成二進制再進行轉換,八進制是以右邊數過來三位三位來算的,(
反過來同理,在進行二進制轉八進制的時候,首位不夠三位補零),比如八進制的23 二進制就是010(2) 011(3);
十六進制就是以四位爲單位,比如同樣十六進制的23,變成二進制就是0010 0011,即100011返回去從右邊數四位過來,不夠四位補零即可;

其他進制的小數轉換實在用的少,不做筆記了。


2、if(a==0)和if(0==a),爲什麼推薦後一種寫法
  解答:因爲如果前面那種寫法漏掉了一個等號,那麼就會變成賦值,而後一種漏掉一個等號編譯就會不通過,能及時預防出錯,這是一種良好的編程習慣。

3、for 語句的死循環和while的區別
解答:
一般for(;;)性能更優

for(;;)
{}
這兩個;; 空語句,編譯器一般會優掉的,直接進入死循環
while(1)
{}
每循環一次都要判斷常量1,在這裏while比for多做了這點事







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章