Java常用进制及其转换

转发自:http://greemranqq.iteye.com/blog/1837881

JAVA 中几个进制的表示:

二进制:

比如 int a = 1;表示应该是 0001.是四位的,但是前面的全是0可以不显示。由于二进制表示太长了,因此一般不用,eclipse 也不会显示出来。听说JDK 1.7 以上 二进制是0b 开头,由于JDK BUG 原因,一直没有,大家自己去了解吧。

八进制:

八进制是就有前缀了,以0开头,比如010 ,转换成十进制是8.。在程序转换中,打印前面的0也被省略了。他的范围值 0~7.如果你看见1238,这种,就肯定不是八进制了。

16进制:

前缀是0x.比如:0x10,表示16.表示范围是:0~9,A (10)B(11)C(12)D(13)E(14)F(15),如果是:0xFF = 255.

上面的转换,我默认全是10进制的转换,下面我们看看 是如何转换的。

转换原则:从非0开始计算,用默认进制为底数,当前位置为减-1,为幂,乘以当前位置的数。所有结果相加。

二进制转换:因为二进制只能0,1 因此就省略了 * 1.

0111 = 7, 2^(3-1) + 2^(2-1)+2^(1-1) = 4+2+1.

0101 = 5, 2^(3-1) +2^(1-1) = 4+1.

八进制转:

010 = 8, 8^(2-1)*1= 8

012 = 10, 8^(2-1)*1 +2 = 8+2

036 = 30, 8^(2-1)*3+6 = 24+6

0236 = 158, 8^(3-1)*2+8^(2-1)*3+6 = 128 + 24+6

16进制转换:

0x10 = 16, 16^(2-1)*1 + 0 = 16 + 0

0x1A = 26, 16^(2-1)*1 +10(A) = 16+10

0x2AF = 687, 16^(3-1)*2+16^(2-1)*10 +15(F) = 512 + 160 + 15

至于 10进制转换为 其他进制,就用除法,逆序排序就行,大家都懂的~。~

JAVA 还提供了一些方法,可以用用:

Java代码

1.        // 将10进制,转换成其他进制   
2.        // 转换成二进制   
3.        System.out.println(Integer.toBinaryString(12));   
4.        // 转换成8进制   
5.        System.out.println(Integer.toOctalString(12));   
6.        // 转换成16进制   
7.        System.out.println(Integer.toHexString(12));   
8.           
9.           
10.        // 将其他进制转换为10进制 ,默认只能转2~36 进制。   
11.        // 二进制转换   
12.        System.out.println(Integer.parseInt("101", 2));   
13.        // 会出错,因为 二进制只能有01   
14.        //System.out.println(Integer.parseInt("21", 2));   
15.        // 8进制转换   
16.        System.out.println(Integer.parseInt("021", 8));   
17.        // 16进制转为   
18.        System.out.println(Integer.parseInt("021", 17));   
19.        // 5进制转换   
20.        System.out.println(Integer.parseInt("021", 5));   
21.        // 会出错,因为 5进制,不能有6   
22.        //System.out.println(Integer.parseInt("061", 5));   
23.        // 出错,超出转换范围   
24.        //System.out.println(Integer.parseInt("021", 37));   
25.  
26.        // 这个和上面类似,只是返回是Integer,上面返回的是int,看源码就知道了   
27.        System.out.println(Integer.valueOf("010", 8));  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值