1.介紹
2進製:用兩個阿拉伯數字表示,0、1;
10進製:用十個阿拉伯數字表示,0到9(0、1、2、3、4、5、6、7、8、9);
16進製制:0到9(0、1、2、3、4、5、6、7、8、9) + a到f(a,b,c,d,e,f),
16進製制說明:
這五個字母來分別表示10,11,12,13,14,15;
字母不區分大小寫;
c,c++規定,16進製制數必須以"0x"開頭,後面跟實際數值,其中:0x中的0是數字0,而不是字母o。
2.轉換
2.1 二進位制與十進位制
二進位制轉十進位制
規則:每一位獲得的值=權值 * 2的權位數-1次方,再將結果相加。
舉例:
二進位制:110011
轉化成十進位制:1*25+1*24+0+0+1*2+1*20=51
十進位制轉二進位制
規則:把要轉換的數,除以2,一直除到商為0,將所有餘數倒序排列
舉例:十進位制:51
轉換成二進位制:
2.2 十六進製制與十進位制
十六進製制轉十進位制
規則:每一位獲得的值=權值 * 16的權位數-1次方,再將結果相加。
舉例:
十六進製制:0x10abf
轉換成十進位制:1*164+0+10*162+11*16+15*160=68287
十進位制轉十六進製制
2.3 二進位制與十六進製制
2.3.1 二進位制轉十六進製制
規則:一般地,二進位制先轉換成十進位制,然後十進位制再轉換成十六進製制
舉例:二進位制:110011
二進位制轉換成十進位制,由上面可知,結果為:51;十進位制再轉換成十六進製制,結果為:0x33
2.3.2 十六進製制轉二進位制
規則:一般地,十六進製制先轉換成十進位制,然後十進位制再轉換成二進位制
舉例:十六進製制:0x10abf
十六進製制轉換成十進位制,,由上面可知,結果為:68287;十進位制再轉換成二進位制,結果為:1 0000 1010 1011 1111
2.3.3 僅4位的2進製數與十六進製制互相轉換 快速計算方法
二進位制 十進位制值 十六進值
1111 = 8 + 4 + 2 + 1 = 15 f
1110 = 8 + 4 + 2 + 0 = 14 e
1101 = 8 + 4 + 0 + 1 = 13 d
1100 = 8 + 4 + 0 + 0 = 12 c
1011 = 8 + 4 + 0 + 1 = 11 b
1010 = 8 + 0 + 2 + 0 = 10 a
1001 = 8 + 0 + 0 + 1 = 10 9
1000 = 8 + 0 + 0 + 0 = 8 8
0111 = 0 + 4 + 2 + 1 = 7 7
0110 = 0 + 4 + 2 + 0 = 6 6
0101 = 0 + 4 + 0 + 1 = 5 5
0100 = 0 + 4 + 0 + 0 = 4 4
0011 = 0 + 0 + 2 + 1 = 3 3
0010 = 0 + 0 + 2 + 0 = 2 2
0001 = 0 + 0 + 0 + 1 = 1 1
0000 =0 0
說明:參照該錶,二進位制和十六進製制可以實現自由轉換,但是
其中十進位制的展示,只用於展示,並不能根據將十進位制的值按位數拆分開來直接對照對應的二進位制值進行轉換
二進位制轉十六進製制:從二進位制末端以4位一段,進行拆分,最前面的位數不足4位時,使用0進行填充,按照二進位制轉換成十進位制的方式,分別轉換為十六進製制即可。
舉例:二進位制-111101
以4位進行拆分:0011,1101,轉換成十六進製制:0011=1*2+ 1*1=3,1101=1*23+1*22+0+1=13,轉換結果:0x3d
十六進製制轉二進位制:
上面的對應關係,需要記憶,在十六進製制轉換二進位制時,還有不需要記憶的一種方式:將十六進製制數字分別是使用十進位制數字8,4,2,1進製轉換,然後轉換成4位二進位制數值
規則:十六進製制的每一位的值,使用8,4,2,1進行拆分,不能使用這四個數值求和的,使用0代替;
原因:二進位制數:1111,轉換成十進位制,它的值是多少呢?
你可能還要這樣計算:1 * 2^0 + 1 * 2^1 + 1 * 2^2 + 1 * 2^3 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。
它每一位的權值,從高位往低位分別為:8、4、2、1。即,最高位的權值為23 = 8,然後依次是 22 = 4,21=2, 20 = 1。
1111是最大的4位二進位制,當每位的值分別為:8、4、2、1時,才能滿足4位二進位制數的每一位都為1,
因此,記住8421,對於任意乙個4位的二進位制數,我們都可以很快算出它對應的10進製值。
六進製制的每一位值都需要使用4位二進位制數字表示。
舉例:十六進製制:0x3d
十六進製制轉換成二進位制:
該十六進製制由2位組成:3和d(十進位制的3和13),3=2+1,所以十六進製制的3對應的二進位制為:0011;13=8+4+1,所以十六進製制的c對應的二進位制為:1101,則
0x3d=11 1101
小結:十進位制轉二進位制,有2種實現方式
方式一:
當十進位制數字較小時,一直除以2,將得到的餘數進行倒序排列即可。
方式二:
當十進位制數字較大時,先轉換成十六進製制,再轉換成二進位制即可。(推薦使用)
二進位制轉十進位制,也有2種實現方式
方式一:
每一位分別乘以2的(該位所在位數-1)次方,對結果求和。
方式二:
當二進位制數很長時,先轉換成十六進製制,再轉成二進位制。
10進製轉2進製和16進製制
看到論壇說面試遇到,就嘗試寫 public class test public static string tobinary int n return temp.reverse tostring 10進製轉16進製制 將給定的十進位制整數除以基數16,餘數便是等值的16進製制的最低位。將上一步的商再...
10進製與2進製,8進製,16進製制的相互轉換
理解了原理不管什麼進製的都可以類似的轉換,只是我在轉換時最開始沒注意到char 型別的 0 和1 其實對應的int型別的是48 和49 這個明白了一切轉換很容易 10進製與2進製的相互轉換 public static void main string args system.out.println ...
c 之進製轉換16進製制 10進製
本文講解一種在c 中如何將16進製制字串轉化成10進製,水平不高,但願對你有幫助。一下便是源程式,包涵檢錯以及轉化函式。前些日子幫乙個朋友做筆試題,結果因為不熟悉這塊的內容,只得了80分,自己好好安靜下來寫了一次,include include using namespace std void ch...