当前计算机系统使用的基本上是二进制(“逢二进一”“借一当二”),而人们常用的进制还有十进制、八进制、十六进制等等。于是我们就需要进行进制之间的转换。
以下就是进制相互转化表
那么问题来了,这个表需要背诵吗?不是吧,看着就头大,背就更不可能了。别急,进制之间的转换可以靠算的,而且有技巧 ,不需要死记硬背。
下面就来一一演示说明吧~
十进制转成二进制 除2取反
举个简单的例子:十进制数11转二进制
除2,将余数放到一边,得数继续除2,重复此操作
(最后余1就直接拿过去余数那里)
反序取即从下往上读(黄色箭头所示)于是十进制数11转成二进制就是1011
二进制转十进制 权值法
将一个二进制数依次从末位开始乘2的n 次幂(n从0开始),再逐一相加。
举个例子:二进制1010转成十进制
要乘本来那位的数字。二进制数1010转成十进制就是10。
十进制转八进制 除八反序取余法
具体操作跟十进制转二进制没什么区别,只是将除2换成了除8
举个例子:十进制123转八进制
八进制转十进制 权值法
具体操作跟二进制转十进制没有什么区别,只是把乘2的n次方改为乘8的n次方。
举个例子:八进制786转十进制
十进制转十六进制 除十六反序取余法
同上
举个例子:十进制数876转十六进制
注意 !!!十六进制中1~9用数字表示,而10~15用A~F表示,不能超过16,否则就是出错了。
十六进制转十进制 权值法
同上
举个例子:
好了,上面就是十进制转n进制的方法以及n进制转回十进制的方法。每次都得手算还是麻烦,说好的技巧呢???
好吧,下面就来介绍以下技巧吧~
首先我们来观察一下这个表
十进制 二进制 八进制 十六进制
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
16 10000 20 10
................
发现没有,十进制2对应二进制10,4对应100,8对应1000,16对应10000。
也就是说2的n次幂,这个n就对应1后面0的个数。
在十进制转成二进制的过程中我们可以把数字进行拆分(拆分成2、4、8、16...,直接分别对应10,100,1000,10000...)
例如:十进制数123可以拆分成64+32+16+8+2+1,直接转成二进制为1000000+100000+10000+1000+10+1=1111010.
反过来,二进制数也可以按照这种对应关系转化为十进制数
例如:10010拆为10000+10=16+2=18
二进制与八进制的转换:
二进制转八进制,将二进制数字3个分为一组(注意分组要从末位开始,即从右往左操作)然后按照上面说的拆分法(也可直接读出)八进制数。
八进制转二进制,按照拆分法操作。注意:不够三位的要在高位补0(也就是最左边)
若想实现八进制和十六进制之间的转换,都需要先转换为二进制,再做进一步的转化,简单来说就是得通过二进制这个中间人。
刚才举的例子全是整数之间的转换,那么问题来了,遇到小数怎么办呢?
好的,我们引入新的操作方案:
十进制小数转换成二进制:小数部分乘2,取整数,不足1的取0,每次相乘的都是小数部分。顺序看取整后转化的结果。
举个例子:
注意!!!这时候就得从上往下读,读作011。
今天就先到这里啦,手写的例子有点丑,凑活着能看懂就行,关于数据的储存方式将会记在下一篇博客中。