进制之间的转换
2017-07-19 19:04
239 查看
作为编程人员,我们常用的进制类型为 2 进制、8 进制、10 进制以及 16 进制了,他们的表示方法为:2进制为(0b001101),也就是二进制数前加上(0b);8进制为(067),进制数前加上(0);10进制就不需多说了,什么也不加就行,而16进制前需要加上(0x),如(0x78AF)。他们的区别在于逢几进位,譬如说2进制,就是逢2进1, 8进制就是逢10进1,以此类推......
如果这样说难以理解的话,我们可以想想我们从小学到大的10进制数,10进制数它的每一位可表示的范围为【0,9】,我们以8位来举例,9 的10进制可写为 0000 0009,若想表示10的话,就要在 0000 0009 的基础上 +1,这样的话就要变成0000 0010 了,是不是逢10进了1位啊?
再说 2 进制,2 进制每一位的取值范围为【0,1】; 8 进制每一位的取值范围为【0,7】;
最后说一下 16 进制,这一种进制有一丢丢的小不同, 16 进制每一位的取值范围为【0,15】,因为说的是一位,而15是两位数,所以我们采用了一种用一位代表两位数的方法,从【0,9】就不多说了,都是1位,可以不用变,但是【10,15】必须要变一下了,我们采用【A,F】的方法表示【10,15】这6位数,即 10 = A,11=B,...15=F。所以16进制每一位的取值范围为【0,F】!
如:789=1100010101(B)
789/2=394 余1 第10位
394/2=197 余0 第9位
197/2=98 余1 第8位
98/2=49 余0 第7位
49/2=24 余1 第6位
24/2=12 余0 第5位
12/2=6 余0 第4位
6/2=3 余0 第3位
3/2=1 余1 第2位
1/2得0 余1 第1位
这样我们可以看到,由10进制转换成2进制的方法就是对这个 10进制数进行除二取余,直到除尽,然后逆序排列,这样就得出了此 10进制数的 2进制形式了。
再说 8进制如何转换成 2 进制吧。
8进制的一位可以表示为【0,7】,但 2 进制要表示【0,7】却需要三位,所以8 进制表示一位,那么 2 进制需要用 3 位开始表示,所以说 2 进制转化为八进制的话就应该是没三位转化为 8 进制中的一位。譬如: 8 进制中的 067 转换成 2 进制数:前面第一个数 “0” 为8进制的表示方式,真实数值应该是后面的67,我们应该从低位到高位一位一位的来转换,先说7,就可转换为 2 进制:111 ,6 则转换为 2 进制 110 ,所以8进制的(0 6 7)就可转换成 2进制中的(0b 110
111).若是2进制转换成 8 进制,倒回去即可,原理相同。
16进制如同 8 进制般,只不过它的每一位需要 2 进制的 的 4 位来表示,举个例子吧,把16进制的(0x 89AF)转换成 2 进制该如何转换呢?也需要从低位到高位一位位来,前面
的 0x 是16 进制的的表示方式,不用管他,真是数值只是 8 9 A F,F
转换成 2 进制可表示为:1111 ,A可表示为:1010 ,9 可转换为:1001 ,8 可表示为 1000,所以
16进制数(0x 8 9 A F)转换成 2 进制数可表示为(0b 1000 1001 1010 1111)。
若还未懂,请细看
如果这样说难以理解的话,我们可以想想我们从小学到大的10进制数,10进制数它的每一位可表示的范围为【0,9】,我们以8位来举例,9 的10进制可写为 0000 0009,若想表示10的话,就要在 0000 0009 的基础上 +1,这样的话就要变成0000 0010 了,是不是逢10进了1位啊?
再说 2 进制,2 进制每一位的取值范围为【0,1】; 8 进制每一位的取值范围为【0,7】;
最后说一下 16 进制,这一种进制有一丢丢的小不同, 16 进制每一位的取值范围为【0,15】,因为说的是一位,而15是两位数,所以我们采用了一种用一位代表两位数的方法,从【0,9】就不多说了,都是1位,可以不用变,但是【10,15】必须要变一下了,我们采用【A,F】的方法表示【10,15】这6位数,即 10 = A,11=B,...15=F。所以16进制每一位的取值范围为【0,F】!
那二进制与其他进制是如何进行相互转换的呢?
先说10进制如何转换成2进制吧。如:789=1100010101(B)
789/2=394 余1 第10位
394/2=197 余0 第9位
197/2=98 余1 第8位
98/2=49 余0 第7位
49/2=24 余1 第6位
24/2=12 余0 第5位
12/2=6 余0 第4位
6/2=3 余0 第3位
3/2=1 余1 第2位
1/2得0 余1 第1位
这样我们可以看到,由10进制转换成2进制的方法就是对这个 10进制数进行除二取余,直到除尽,然后逆序排列,这样就得出了此 10进制数的 2进制形式了。
再说 8进制如何转换成 2 进制吧。
8进制的一位可以表示为【0,7】,但 2 进制要表示【0,7】却需要三位,所以8 进制表示一位,那么 2 进制需要用 3 位开始表示,所以说 2 进制转化为八进制的话就应该是没三位转化为 8 进制中的一位。譬如: 8 进制中的 067 转换成 2 进制数:前面第一个数 “0” 为8进制的表示方式,真实数值应该是后面的67,我们应该从低位到高位一位一位的来转换,先说7,就可转换为 2 进制:111 ,6 则转换为 2 进制 110 ,所以8进制的(0 6 7)就可转换成 2进制中的(0b 110
111).若是2进制转换成 8 进制,倒回去即可,原理相同。
16进制如同 8 进制般,只不过它的每一位需要 2 进制的 的 4 位来表示,举个例子吧,把16进制的(0x 89AF)转换成 2 进制该如何转换呢?也需要从低位到高位一位位来,前面
的 0x 是16 进制的的表示方式,不用管他,真是数值只是 8 9 A F,F
转换成 2 进制可表示为:1111 ,A可表示为:1010 ,9 可转换为:1001 ,8 可表示为 1000,所以
16进制数(0x 8 9 A F)转换成 2 进制数可表示为(0b 1000 1001 1010 1111)。
若还未懂,请细看
相关文章推荐
- javascript 进制转换(2进制、8进制、10进制、16进制之间的转换)
- 还是进制之间的转换,这次全部是自己写的没有用Java的Integer
- 16进制、10进制、BCD码之间的转换
- 十进制与其他进制之间的转换
- 十六进制以内任意进制之间的转换
- Java进制之间互相转换
- java中各进制之间的转换
- php 进制之间转换数字
- C/VC 进制数之间的转换 矩阵转置 单词计数
- 【黑马程序员】Java基础01:进制之间的互相转换
- VB实现各种进制之间的转换
- 不同进制之间的转换
- 在C++中用栈实现进制之间的转换
- 进制之间的转换及定义
- C 语言进制之间的转换
- 进制之间的转换
- X进制与10进制之间的转换
- C语言中进制之间的想换转换
- Java随笔(3)快速进行各进制之间的转换
- PHP常用函数:62进制转换及任意进制之间转换函数