我来用最基本的语言,为大家介绍一下,2进制,8进制,10进制,16进制之间的关系。用最短的时间,学到最多的东西!
算机进制(了解)
1、进制介绍
计算机底层的数据运算和存储都是二进制数据。
计算机语言就是二进制,计算机能直接识别二进制数据,其它数据都不能直接识别。
计算机的数据转换,基本都是操作系统自动转换的。
2、常用进制
l 十进制:有10个基本数字,分别为0、1、2、3、4、5、6、7、8、9,运算规则”逢十进一”;
l 八进制:有8个基本数字,分别为0、1、2、3、4、5、6、7,运算规则”逢八进一”
l 十六进制:有16个基本数字,分别为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,运算规则”逢十六进一”。
l 二进制:有2个基本数字,分别为0、1,运算规则”逢二进一”。
10进制 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
8进制 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
20 |
16进制 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
10 |
2进制 |
0 |
1 |
10 |
11 |
100 |
101 |
110 |
111 |
1000 |
1001 |
1010 |
1011 |
1100 |
1101 |
1110 |
1111 |
10000 |
一个8进制数,可以用3个二进制数,来表示。如:(567)8 = (101 110 111)2
一个16进制数,可以用4位二进制数,来表示。如:(A23)16 = (1010 0010 0011)2
3、10进制转成2进制
原理:除2取余法。第一次将整数除以2,取余数;然后,再将商除以2,再取余数;一直除下去,直到商为0,就除完了。最后读数时,从最后一位读起。
举例:将(10)10 转成 二进制?
第N次 |
整数10 |
商 |
余数 |
第1次 |
10/2 |
5 |
0 |
第2次 |
5/2 |
2 |
1 |
第3次 |
2/2 |
1 |
0 |
第4次 |
1/2 |
0 |
1 |
结果是:(1010)2
函数decbin()可以将十进制转成二进制。(用代码来实现)
// 将十进制转化成二进制
echo decbin(10);
// 结束
该代码片段得到的结果是:1010
4、10进制转成8进制
原理:除8取余法。第一次将整数除以8,取余数;然后,再将商除以8,再取余数;一直除下去,直接商为0,就除完了。最后读数时,从最后一位读起。
举例:(678)10 转成八进制
函数decoct()可以将十进制转成八进制。
// 将十进制转成八进制
echo decoct(678);
// 结束
该代码片段得到的结果是:1246
5、10进制转成16进制
原理:除16取余法。第一次将整数除以16,取余数;然后,再将商除以16,再取余数;一直除下去,直接商为0,就除完了。最后读数时,从最后一位读起。
举例:(6789)10转成十六进制?
函数dechex()可以将十进制转成十六进制
// 将十进制转成十六进制
echo dechex(6789);
// 结束
该代码片段得到的结果是:1a85
6、2进制转成10进制
原理:按权相加法。2进制每一位上的数,乘以所在的位权(指数常数),然后将各个乘积求和。
举例:(1010)2转成十进制?
(1010)2 = 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 8 + 0 + 2 + 0 = (10)10
函数bindec()将二进制转成十进制。
// 二进制转成十进制
echo bindec("1010");
// 结束
该代码片段得到的结果是:10
7、8进制转成10进制
原理:按权相加法。8进制每一位上的数,乘以所在的位权(指数常数),然后将各个乘积求和。
举例:(1246)8转成十进制?
(1246)8 = 1*8^3 + 2*8^2 + 4*8^1 + 6*8^0 = 512 +128 + 32 + 6 = (678)10
函数octdec()将八进制转成十进制。
// 八进制转成十进制
echo octdec(1246);
// 结束
该代码片段得到的结果是:678
8、16进制转成10进制
原理:按权相加法。16进制每一位上的数,乘以所在的位权(指数常数),然后将各个乘积求和。
函数hexdec()将十六进制转成十进制。
// 十六进制转成十进制
echo hexdec(1a85);
// 结束
该代码片段得到的结果是:6789