平時使用的數字都是由 0~9 共十個數字組成,例如 1、8、10、666、999 等,一個數字最多能表示九,如果要表示十、十一、二十九、一百等,就需要多個數字組合起來。

例如表示 5+8 的結果,一個數字不夠,只能」進位「,用 13 來表示;這時」進一位「相當於十,」進兩位「相當於二十。

因為逢十進一(滿十進一),也因為只有 0~9 共十個數字,所以叫做十進位。十進位是在人類社會發展過程中自然形成的,它符合人們的思維習慣,我們平時使用的默認就是十進位的。

進位也就是進位制。進行加法運算時逢X進一(滿X進一),進行減法運算時借一當X,這就是X進位,這種進位也就包含X個數字,基數為X。十進位有 0~9 共10個數字,基數為10,在加減法運算中,逢十進一,借一當十。其實就是我們小學老師教我們的加法和減法。

二進位

我們不妨將思維拓展一下,既然可以用 0~9 共十個數字來表示數值,那麼也可以用0、1兩個數字來表示數值,這就是二進位。例如,數字 0、1、10、11、111、1111110都是有效的二進位。

在計算機內部,數據都是以二進位的形式存儲的,二進位是學習編程必須掌握的基礎。

二進位加減法和十進位加減法的思想是類似的(其實所有的進位的算術原理都是相似的):

對於十進位,進行加法運算時逢十進一,進行減法運算時借一當十;

對於二進位,進行加法運算時逢二進一,進行減法運算時借一當二。

二進位加減法的運算過程,自己可以在紙上畫出來,其實就是我們小學老師教的列豎式的加減法啊。

1) 二進位加法:1+0=1、1+1=10、11+10=101、111+111=1110

2) 二進位減法:1-0=1、10-1=1、101-11=10、1100-111=101

八進位

除了二進位,C語言還會使用到八進位。

八進位有 0~7 共8個數字,基數為8,加法運算時逢八進一,減法運算時借一當八。例如,數字 0、1、3、7、26、77、77777都是有效的八進位。

1) 八進位加法:6+2=10、6+6=14

2) 八進位減法:6-4=2、20-7=11

十六進位

除了二進位和八進位,十六進位也經常使用,甚至比八進位還要多。

十六進位中,用A來表示10,B表示11,C表示12,D表示13,E表示14,F表示15,因此有 0~F 共16個數字,基數為16,加法運算時逢16進1,減法運算時借1當16。例如,數字 0、1、5、9、A、D、F、567D、F55、AAA65F、EE22 都是有效的十六進位。

注意,十六進位中的字母不區分大小寫,ABCDEF 也可以寫作 abcdef。

1) 十六進位加法:6+4=A、58+62=BA、A00+600=1000

2) 十六進位減法:1D-2=1B、AB52-69FF=41B3、

二進位、八進位、十六進位、十進位之間的轉換。掌握原理即可。

二進位、八進位和十六進位向十進位轉換都比較容易,這部分其實中學也是學過的。也是很基礎。就是「按權相加」。所謂「權」,也即「位權」。

假設當前數字是 N 進位:對於整數部分,從右往左看,第 i 位的位權等於N的i-1次方

對於小數部分,恰好相反,要從左往右看,第 j 位的位權為N -j次方。我記得高中學過,相當於公式把將十進位轉換為二進位、八進位、十六進位,十進位整數轉換為 N 進位整數採用「除 N 取余,逆序排列」

小數部分實際開發用的很少,有興趣的可以自學下,稍微麻煩點。

二進位和八進位、十六進位的轉換,這個得掌握,把常用的記住,靈活使用

1) 二進位整數和八進位整數之間的轉換

二進位整數轉換為八進位整數時,每三位二進位數字轉換為一位八進位數字,運算的順序是從低位向高位依次進行,高位不足三位用零補齊。

2) 二進位整數和十六進位整數之間的轉換

二進位整數轉換為十六進位整數時,每四位二進位數字轉換為一位十六進位數字,運算的順序是從低位向高位依次進行,高位不足四位用零補齊。

另外推薦Windows系統下用計算機器 調成程序員模式,既可以各種進位之間的換算。

建議先找幾個簡單的例子換算下。

這張表格建議記住比較實用。

另外

本人專業從事C語言開發,也結合開發和平時教學總結了一本關於C語言的講義,歡迎諮詢,提供C語言輔導服務,專升本計算機輔導,計算機二級輔導等等,一對一扣扣在線輔導。


推薦閱讀:
相关文章