基础概念:
计算机通信和存储的时候都是以010101这样的二进制数据为基础的,这儿的一个0和1占的地方就叫bit(位),即一个二进制位,
一个字节 byte 是八位,即八个二进制位。
不同进制的产生:
2进制,逢2进1
4进制,逢4进1
。。。。。。
16进制,逢16进1
16进制标示:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
运算:
x进制 —— 10 进制
例1:
x为二进制 x=0110
公式:从右向左(低位到高位)0*2^0+1*2^1+1*2^2+0*0^3=6
例2:
x为16进制 x=5E
公式:从右向左(低位到高位)E=15 15*16^0+5*16^1= 95
10进制——x进制
方法:将10进制的数除以x,一直除到除不尽为止,没一次执行除以的操作的余数倒叙排列就是结果
列3:
x为2进制 10进制数为1234
1234/2 = 617 余 0
617/2 = 308 余 1
308/2 = 154 余 0
154/2 = 77 余 0
77/2 = 38 余 1
38/2 = 19 余 0
19/2 = 9 余 1
9/2 = 4 余 1
4/2 = 2 余 0
2/2 = 1 余 0
1/2 = 0 余 1
结果二进制为 100 1101 0010
可以看到以上运算比较繁琐,因为进制越小,位数越多(例1,2),除数越小(例3),所有计算步数会越多。
我们发现二进制是8位,16进制是32位,4位的二进制转换为16进制为1位,2进制与16进制转换会很方便。
例4:二进制为1111,对应10进制数值为8+4+2+1=15, 15对应16进制为F,
例5:16进制为E, 对应10进制数值为14,根据例1,如果转为二进制需要8,4,2,1这四个数组合,14组合为8,0,2,1,所有对应二进制就为1011
这样:
例1中二进制转10进制,为了不那么多相乘运算就可以先转为16进制,然后由16进制转为10进制
例3中10进制转二进制,为了不那么多除以运算就可以先转为16进制,再由16进制转为二进制
可能会有疑问例4中二进制转10进制很容易,为什么要转16进制再转10进制呢,这是因为例4的二进制只有4位,如果很多位,那用例4 的方法就会快捷一些,
如例6:二进制为0110 1111,这样转10进制就需要好多相乘运算,先转16进制试试看:
0110 1111 转16进制 根据例4 中的8421, 0110 为 6,16进制为6 ;1111为15,16进制为F,转为16进制结果为6F,再依据例1 计算 F*16^0+6*16^1 = 111.
例5同样道理。