十進制,二進制,八進制,十六進制之間的轉換,左右移運算符
進制概念
1。 十進制
十進制使用十個數字(0、1、2、3、4、5、6、7、8、9)記數,基數爲10,逢十進一。
歷史上第一臺電子數字計算機ENIAC是一臺十進制機器,其數字以十進制表示,並以十進制形式運算。設計十進制機器比設計二進制機器複雜得多。而自然界具有兩種穩定狀態的組件普遍存在,如開關的開和關,電路的通和斷,電壓的高和低等,非常適合表示計算機中的數。設計過程簡單,可靠性高。因此,現在改爲二進制計算機。
2。 二進制
二進制以2爲基數,只用0和1兩個數字表示數,逢2進一。
二進制與遵循十進制數遵循一樣的運算規則,但顯得比十進制更簡單。例如:
(1)加法:0+0=0 0+1=1 1+0=1 1+1=0
(2)減法:0-0=0 1-1=0 1-0=1 0-1=1
(3)乘法:0*0=0 0*1=0 1*0=0 1*1=1
(4)除法:0/1=0 1/1=1,除數不能爲0
3。 八進制
所謂八進制,就是其基數爲8,基數值可以取0、1、2、3、4、5、6、7共8個值,逢八進一。
八進制與十進制運算規則一樣。那麼爲什麼要用八進制呢?難道要設計八進制的計算機麼?實際上,八進制與十六進制的引用,主要是爲了書寫和表示方便,因爲二進制表示位數比較長。如:(1024)10 用二進制表示爲 (10000000000)2,共有11個數字,用八進制表示爲(2000)8。更重要的是,由於二進制與八進制存在在一種對等關係,每三位二進制與一位八進制數完全對等(23=8)。所以二進制和十進制在運算上無區別,而時進制不具備這一優點。
4。 十六進制
十六進制應用也是非常廣泛的一種計數制。在使用者看來,十六進制是二進制數的一種更加緊湊的一種表示方法。
基數爲:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,逢十進一。在十六進制系統中,數值爲10到15的數分別用A、B、C、D、E、F表示。
二進制數及與之等值的八進制、十進制和十六進制數
二進制 八進制 十進制 十六進制
0000 0 0 0
0001 1 1 1
0010 2 2 2
0011 3 3 3
0100 4 4 4
0101 5 5 5
0110 6 6 6
0111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15
二。進制轉換
1。二進制與十進制數間的轉換
(1)二進制轉換爲十進制
將每個二進制數按權展開後求和即可。請看例題:
把二進制數(101.101)2=1*22+0*21+1*20+1*2-1+0*2-2+1*2-3=(5.625)10
(2)十進制轉換爲二進制
一般需要將十進制數的整數部分與小數部分分開處理。
整數部分計算方法:除2取餘法 請看例題:
十進制數(53)10的二進制值爲(110101)2
小數部分計算方法:乘2取整法,即每一步將十進制小數部分乘以2,所得積的小數點左邊的數字(0或1)作爲二進制表示法中的數字,第一次乘法所得的整數部分爲最高位。請看例題:
將(0.5125)10轉換成二進制。(0.5125)10=(0.101)2
2。 八進制、十六進制與十六進制間的轉換
八進制、十六進制與十六進制之間的轉換方法與二進制,同十進制之間的轉換方法類似。例如:
(73)8=7*81+3=(59)10
(0.56)8=5*8-1+6*8-2=(0.71875)10
(12A)16=1*162+2*161+A*160=(298)10
(0.3C8)16=3*16-1+12*16-2+8*16-3=(0.142578125)10
十進制整數→→→→→八進制 方法:“除8取餘”
十進制整數→→→→→十六進制 方法:“除16取餘” 例如:
(171)10=(253)8
(2653)10=(A5D)16
十進制小數→→→→→八進制小數 方法:“乘8取整”
十進制小數→→→→→十六進制小數 方法:“乘16取整” 例如:
(0。71875)10=(0.56)8
(0.142578125)10=(0.3C8)16
3. 非十進制數之間的轉換
(1)二進制數與八進制數之間的轉換
轉換方法是:以小數點爲界,分別向左右每三位二進制數合成一位八進制數,或每一位八進制數展成三位二進制數,不足三位者補0。例如:
(423。45)8=(100 010 011.100 101)2
(1001001.1101)2=(001 001 001.110 100)2=(111.64)8
2。二進制與十六進制轉換
轉換方法:以小數點爲界,分別向左右每四位二進制合成一位十六進制數,或每一位十六進制數展成四位二進制數,不足四位者補0。例如:
(ABCD。EF)16=(1010 1011 1100 1101.1110 1111)2
(101101101001011.01101)2=(0101 1011 0100 1011.0110 1000)2=(5B4B。68)16
補碼:
一個正數的補碼和該數的原碼(即該數的二進制形式)相同。
求一個負數的補碼的方法是:將該數的絕對值的二進制形式,按位取反再加1。例如求-10的補碼:
10的原碼:0000000000001010
取反: 1111111111110101
再加1: 1111111111110110
1111111111110110就是-10的補碼了。
如果已知負數和補碼求正數的補碼:則反過來求就行了。
左移運算符(<<):a<<b,表示a的二進制向左移動b位;
右移運算符(>>):a>>b, 表示a的二進制向右移動b位。