在开发中其实数字转换进制是经常的事,但是它是如何实现转换的呢?
先随便拿一个数字来计算,就定为 28 吧,要将 一个十进制的 28 转换为 二进制应该怎么去做呢?
其实很简单,我们来看例子: 先将 28 除以 2, 即 28 / 2 = 14 余 0, 接着 将 14 / 2 = 7 余 0 ,接着将 7 / 2 = 3 余 1 , 接着将 3 / 2 = 1 余 1
最后将 最后一个商 从 后 向前拼接起来 即: 28转换为二进制 则为 11100,
那么我们来验证一下是否是对的
结果证明是对的,那我们再来一个验证这个方法:
拿一个大一点的数,就定 453 吧
第一步,计算:
453 / 2 = 226 ······ 1
226 / 2 = 113 ······ 0
113 / 2 = 56 ······ 1
56 / 2 = 28 ······ 0
28 / 2 = 14 ······ 0
14 / 2 = 7 ······ 0
7 / 2 = 3 ······ 1
3 / 2 = 1 ······ 1
第二步,拼接:
最后一个商 为 1 ,然后把这个商和这些余数从后向前拼接起来,即 111000101
那么我们再去验证一下结果:
结果说明这个方法是正确的。
那如果我想 将一个二进制转换为一个十进制 应该怎么做呢?
其实也很简单,例如现在有一个二进制 为 111000101,那么我们是从后向前来进行排序来进行计算。
第一步,计算:
1 * 2的0次方 = 1
0 * 2的1次方 = 0
1 * 2的2次方 = 4
0 * 2的3次方 = 0
0 * 2的4次方 = 0
0 * 2的5次方 = 0
1 * 2的6次方 = 64
1 * 2的7次方 = 128
1 * 2的8次方 = 256
第二步,将结果相加起来:1 + 0 + 4 + 0 + 0 + 0 + 64 + 128 + 256 = 453
接下来是 16 进制和 10 进制的转换
在这里我们先看一个对照表:
在这里作出这个表的说明:其实不管是几进制,就是逢几进 1 的意思,例如我们平时最常用的十进制计算逢10进1,在进为之前有0 ,1 ,2 ,3, 4, 5, 6, 7, 8 ,9 代表,
当然,如果是8进制,那就是 0, 1, 2, 3, 4, 5, 6 ,7
如果是 12 进制就是 0 到 B,
如果是16 进制就是 0 到 F,当然还有很多其它的进制,其实都是一样的道理。
在16进制中我们经常看到会有一些大写的字母,例如: 2AF2BC
其实我们只要知道A B C D E F 分别代表着一个数字就可以了,A代表数字 10,B代表数字 11,C代表数字 12, D代表数字 13, E代表数字14,F代表数字15
那接下来就简单了,因为计算其实和二进制是差不多的。
我们来看一个例子:将十六进制 2AF2BC 转换为 十进制
第一步:从后向前来进行排序来进行计算。
首先是C,它代表的是12,
那就是 12 * 16的0次方 = 12
B代表的是11,即:11 * 16的1次方 = 176
接下来是 2 * 16 的2次方 = 512
F代表的是15,即:15 * 16的3次方 = 61440
A代表的是10,即:10 * 16的4次方 = 655360
接下来是2 * 16的5次方 = 2097152
第二步,把它们相加:12 + 176 + 512+ 61440 + 655360 + 2097152 = 2814652
接下来我们看一下效果:
那接下来我们将十进制转换为 十六进制,计算方法和二进制是一样的其实
那我们先随便定一个数字,例如:2589
第一步,计算:
2589 / 16 = 161 ······ 13
161 / 16 = 10 ······ 1
第二步,拼接。最后一个商为10则为A,1直接为1,13为 D , 则最后结果为 A1D
最后我们在来看一下12进制和10进制的转换
例如十进制的 18 转换为 12进制
18 / 12 = 1 ······ 6
最后一个商 是 1 拼接起来就是 16
好,我们来个大一点的数字:
例如: 241
241 / 12 = 20 ······ 1
20 / 12 = 1······ 8
拼接起来就是:181 我们看一下结果:
那我们来将12进制转换为 10 进制看看,
如: 5A3B
第一步,计算:
B代表11,则 11 * 12的0次方 = 11
3 * 12 的1 次方 = 36
A代表10,则 10 * 12的2次方 = 1440
5 * 12的3次方 = 8640
第二步,相加: 11 + 36 + 1440 + 8640 = 10127
其实就是怎么简单,所有的进制都可以通过这样的方法来进行转换