进制概述:

进制就是进位制,是人们规定的一种进位方法,对于任何一种进制,比如X进制,就表示第一位置上的数运算时逢X进一位。二进制就是逢2进一,依此类推。


进制之间的关系:

计算机的电子元件只能表示两种状态,我们用  0  和 1 表示,由于生活中,我们的数据各种个样,数字,字母,标点符号,还有众多汉字,所以只有0和1是无法表示的。

所以我们就用8个这样的0和1表示一个数据,也是计算机存储时的最小单位byte,单位间的换算关系如下

1byte = 8 bit

1k = 1024byte

1m = 1024k

1g = 1024m

1t = 1024g

只用2进制表示,有时数据会很长,所以我们用别的进制来转换表示,那么它们之间的关系为

二进制   10100010

八进制    101  000  010  ->  502

将二进制数据每三个一组划分,左边不够的用0补齐,然后每组转换成十进制,再组合起来就是此数据对应的八进制表示

十六进制  1010  0010 -> 102

将二进制数据每四个一组划分,左边不够的用0补齐,然后每组转换成十进制,再组合起来就是此数据对应的十六进制表示


不同进制的数据在编程中的表达方法:

有时仅仅给出一个数据,不告诉我们数据的进制,我们就无法知道其实际表示的数据。所以针对不同的进制,我们约定了不同的书写方式。

二进制

由0,1组成,以0b开头

八进制

由0-7组成,以数字0开头

十进制

由0-9组成,整数默认是10进制

十六进制

由0-9 a-f组成,以0x开头。


任意进制到十进制的转换:

位权展开法 (乘法运算)   

任意进制转换为十进制后的结果 = 每一位上的系数*基数^位权。即 结果等于系数乘以基数的位权次幂

以十进制  123 举例。系数是每位上实际的数字,基数是10,进制多少,基数就为多少,位权是从右往左,从零编号,依次为0,1,2....

二进制  100   表示为十进制  1*2^2+0*2^1+0*2^0 = 4

八进制  123   表示为十进制   1*8^2+2*8^1+3*8^0 = 83


十进制到任意进制的转换:

除法运算

除以基数,取余数,直到商为0,余数反转,如下图,得到12345

java语言基础(5)——进制,进制转换以及不同进制的数据的书写方式_进制

快速的进制转换:

8421码

java语言基础(5)——进制,进制转换以及不同进制的数据的书写方式_进制_02

把二进制位对应的十进制数字相加,即可快速实现二进制到十进制的转换。而十进制到二进制的转换也可参照上表逆向快速实现转换。


任意X进制到Y进制的转换:

上面我们学习了任意进制与十进制之间的转换,那么任意x进制到y进制的转换,我们可以以十进制为桥梁,实现进制转换。