二、八、十、十六进制换算方法

一、常见进制数之间的算关系表:

二 ……     八……十…十六(进制)
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……F

 

二、 二进制换算成八进制和十六进制的方法

 

如二进制的“10110111011”:
换八进制时,从右到左,三位一组,不够补0,即成了:
010 110 111 011
然后每组中的3个数分别对应4、2、1的状态,然后将为状态为1的相加【备注】,如:
010 = 2
110 = 4+2 = 6
111 = 4+2+1 = 7
011 = 2+1 = 3
结果为:2673

而换十六进制时其实也类似,只要每组4位,分别对应8、4、2、1就行了,如分解为:
0101 1011 1011
运算为:
0101 = 4+1 = 5
1011 = 8+2+1 = 11(由于10为A,所以11即B)
1011 = 8+2+1 = 11(由于10为A,所以11即B)
结果为:5BB

注意,二进制数转化为八进制数、十六进制数时,对于分组,整数部分是从右向左分组,不够在左边补0,而小数部分则是从左向右分组,不够在右边补0,

如二进制小数:
0.1100111
转化为八进制数,应分组为:0.110 011 100 ,转化后为0.634
转化为十六进制数,应分组为:0.1100 1110,转化后为0.CE

 

三、 二  八 十六进制换算成十进制

 

3.1 二进制数转换为十进制数

二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……

所以,设有一个二进制数:0110 0100,转换为10进制为:

下 面是竖式:

0110 0100 换算成 十进制

第0位 0*20 = 0

第1位 0*21 = 0

第2位 1*22 = 4

第3位 0*23 = 0

第4位 0*24 = 0

第5位 1*25 = 32

第6位 1*26 = 64

第7位 0*27 = 0 +

---------------------------

100

用横式计算为:

0*20 + 0*21 + 1*22 + 1*23 + 0*24 + 1*25 + 1*26 + 0*27 = 100

 

3.2 八进制数转换为十进制数

 

八进制就是逢8进1。

八进制数采用 0~7这八数来表达一个数。

八进制数第0位的权值为8的0次方,第1位权值为8的 1次方,第2位权值为8的2次方……

所以,设有一个八进制数:1507,转换为十进制为:

用竖式表示:

1507 换算成十进制。

第0位 7*80 = 7

第1位 0*81 = 0

第2位 5*82 = 320

第 3位 1*83 = 512 +

--------------------------

839

 

3.3 十六进制数转换成十进制数

 

16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示 10,11,12,13,14,15。字母不区分大小写。

十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的 权值为16的2次方……

所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X 16的N次方。

假设有一个十六进数 2AF5, 那么如何换算成10进制呢?

用竖式计算:

2AF5 换算成10进制:

第0位: 5*160 = 5

第1位: F*161 = 240

第2位: A*162 = 2560

第3位: 2*163 = 8192 +

-------------------------------------

10997

 

(别 忘了,在上面的计算中,A表示10,而F表示15)

 

 

 

四、十进制换算成二 、八、十六进制

 

以十进制的数除以所要转换的进制数,把每次除得的余数记在旁边,所得的商数继续除以进制数,直到余数为0时止.例如要把100转换成八进制:
100/8=12...(余数为4);
12/8=1.....(余数为4);
1/8=0......(余数为1);
然后把相应的余数从低向高顺着写出来,如上的为144,此即为100的八进制表示形式.
十进制转换为十六进制与二进制与前面的转化为八进制相同,如100转换为十六进制:
100/16=6....(余数为4);
6/16=0......(余数为6);
则以十六进制表示的100形式为64;
十进制转换为二进制: 整数部分按除2取余,小数部分按乘2取整
例:
50/2    ........ 余0
25/2    ........ 余1
12/2    ........ 余0
6/2     ........ 余0
3/2     ........ 余1
1

50的二进制就是  110010

小 数

0.25*2   ........ 0.5    整数 0
0.5*2    ........ 1.0    整数 1

0.25 的二进制数就是 0.01


五、二、十六进制数互相转换

 

二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。

如(上行为二制数,下面为对应的十六进制):

1111 1101 , 1010 0101 , 1001 1011

  F      D      , A       5       , 9       B

 

反过来,当我们看到 F D时,如何迅速将它转换为二进制数呢?

先转换F:

看到F,我们需知道它是15(可能你还不熟悉 A~F这五个数),然后15如何用8421凑呢?应该是8 + 4 + 2 + 1,所以四位全为1 :1111。

接着转换 D:

看 到D,知道它是13,13如何用8421凑呢?应该是:8 + 2 + 1,即:1011。

所以,FD转换为二进制数,为: 1111 1011

你可能感兴趣的:(java)