浅谈进制
进制 二进制0b 十进制 八进制0 十六进制0x
这里从最基础的开始:数字系统的由来,讲起
数字系统的由来
1.远古时代:
用结绳记事,或者石板上刻道道来计数
不方便,数据大时难数
非位置化数字系统:
2.罗马数字
比如罗马数字里:V表示5,当三个V排一起时:
VVV表示的不是五百五十五,而是单纯表示三个5相加,是15
这就是非位置化数字系统
3.位置化数字系统
人类现在使用的基本上都是位置化数字系统
而非位置化数字系统由于效率太低,现在基本上已经不使用了
二进制 八进制 十进制 十六进制都是位置化数字系统
由于人类有十根手指,所以很自然的人类选择了用十进制进行数学运算,但是计算机是由复杂的电路和电子元件组成的。他们并没有十根手指,只有通电和不通电两种形式,也就是计算机用二进制来进行数据和程序的存储和运算(二进制也就是0和1,0代表通电,1代表不通电)
这里为了好讲二进制,先讲十进制以便于理解
十进制原理
十进制用10个可用符号来表示1个数字
0 1 2 3 4 5 6 7 8 9
就比如这个数字:
百位 十位 个位
2 3 5
2×100 + 3×10 + 5×1
这个235就代表了三个数字的和:2×100+3×10+5×1
换一种方式来表示就是:2×10^2+3×10^1+5×10^0
那么在二进制中
二进制原理
二进制用2个可用符号来表示1个数字
0 1
在十进制中,我们可以把0123456789十种不同的符号放到不同的位置(十位个位百位......),组成不同的数字
所以在二进制中,我们同样可以把不同的符号,放入不同的位置,组成不同的数字
例: 1 0 1 1
这个1011就表示了:
1×2^3 + 0×2^2 + 1×2^1 + 1×2^0
1×8 + 0×4 + 1×2 + 1×1
也就是8 + 0 + 2 + 1 = 11(10)
注意:这里得到的11是十进制的,因为括号里是10,这里小括号应该是右小角的下角标小括号,这里打不出来,将就着看叭
在10进制中,10^0=1,所以第一位是个位,10^1是十位,10^2是百位
类似的,在二进制中:
八位 四位 二位 个位
1×2^3 + 0×2^2 + 1×2^1 + 1×2^0
2的0次方=1,2的1次方=2,2的2次方=4,2的3次方=8
类似的11010就是1×2^4+1×2^3+0×2^2+1×2^1+0×2^0=26(10)
所以二进制中的11010=十进制中的26
所以二进制中的11010=十进制中的26
所以二进制中的11010=十进制中的26
那么八进制和十六进制,就是分别用八个和十六个可用符号来表示数字
八进制
八进制用8个可用符号来表示一个数字:
0 1 2 3 4 5 6 7
八进制的数字和十进制的数字其实也是一一对应的
八进制的01234567其实就对应十进制的01234567(10)
2 7 7(8)
2×8^2 + 7×8^1 + 7×8^0
=128 + 56 + 7 = 191(10)
也就是八进制中的277等于十进制中的191
十六进制
十六进制用16个可用符号来表示一个数字:
0 1 2 3 4 5 6 7 8 9 A B C D E F
十六进制的0123456789ABCDEF其实对应十进制的0123456789 10 11 12 13 14 15(10)
2 A E(16)
2×16^2 + 10×16^1 + 14×10^0
=2×256 + 10×16 + 14×1
=512 + 160 + 14 = 686(10)
现在我们知道了其他进制的数字是怎么转化为十进制的,现在学十进制转化为计算机能识别的二进制和其他进制
方法:连除法
十进制转化为二进制:
如:29(10)
⬇/2
14 (10) 余 → 1 ↑
⬇/2 ↑
7 (10) 余 → 0 ↑
⬇/2 ↑ ➡➡就得到29(10)=11101(2)
3 (10) 余 → 1 ↑
⬇/2 ↑
1 (10) 余 → 1 ↑
⬇/2 ↑
0 (10) 余 → 1 ↑
一直除到此处为0就可以结束了 ,然后把右边的余数从下往上排列
十进制转化为八进制:
如:900(10)
⬇/8
112(10) 余 → 4 ↑
⬇/8 ↑
14 (10) 余 → 0 ↑
⬇/8 ↑ ➡➡得到4061(8)=900(10)
1 (10) 余 → 6 ↑
⬇/8 ↑
0 (10) 余 → 1 ↑
同样把右边的余数从下往上排列
十进制转化为十六进制:
如:2717(10)
⬇/16 ↑
169(10) 余 → 13(10) ↑
⬇/16 ↑
10 (10) 余 → 9 (10) ↑ ➡➡得到2717(10)=0A9D(16)
⬇/16 ↑
0 (10) 余 → 10(10) ↑
同样把右边的余数从下往上排列
还有二进制|八进制|十六进制之间的相互转换:
1.由于2^3=8,所以每3位二进制可以转换为1位八进制
如:10111001(2)
按三位数排,排成10 111 001
从右往左数
最后两位不够了要补个0,0放在前面,也就是补成 010 111 001
从右边第一位数开始,前三位是100,也就是1×2^0+0×2^1+0×2^2=1
0 0 1
0×2^2 0×2^1 1×2^0
再往左三位,是111,也就是1×2^0+1×2^1+1×2^2=7
最后三位,010,0×2^0+1×2^1+0×2^2=2
这里同样是从下往上排
所以得到10111001(2)=271(8)
2.由于2^4=16,所以每4位二进制可以转换为1位十六进制
如:10111001(2)
按四位数排,排成1011 1001
从右往左数
从右边第一位数开始,前四位是1001,也就是1×2^0+0×2^1+0×2^2+1×2^3=9
再往左三位,是1101,也就是1×2^0+0×2^1+1×2^2+1×2^3=B
从下往上排
得到10111001(2)=B9(16)
到这里就完全掌握了进制的相互转换
如果有同学想练习,可以把任意一个进制的数字转换成其他进制,网上有很多进制转换器,可以检查自己转换的对错。
--------------------------------------------------------------------------------------------------------------------------------------------所属院校:忻州师范学院
-----------------------------------------------------------------------------------------------------------------------------------------------------------制作:索文涛