java——进制的转换

来源:互联网 发布:家电 进销存 源码 编辑:程序博客网 时间:2024/06/05 08:58

在做ACM中遇到了p2031和p2051两道题都是进制转换,

p2031是输入两个数n,m;n为十进制数,m为需要转换成的进制。

在这里就来讲一下java中进制转换的思路:

在现实生活中计算进制转换是用某个数去除某个进制数,然后取余数,从而进行进制转换。

在编程思想中就是当n/m>0时,进行求余,把余数放到数组中。

但是当求到最后的余数如果不为0,则还需要进行一次判断,n%m!=0时,进行最后一次求余。

在p2031中,它是随机求从2-16中的任何一个进制,所以,我们要将这些可能求得的余数放入一个字符数组中,

char c={'0','1'....}

然后用字符串来接收所求的余数,在输出,即可

p2031的代码如下:

import java.util.*;


class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
char chs[] = { '0', '1' };
while (sc.hasNext()) {
int a = sc.nextInt();
boolean isNegetive = false;
if (a < 0) {
a = -a;
isNegetive = true;
}
String sum = "";
while (a / 2 > 0) {
sum = chs[a % 2] + sum;
a = a / 2;
}
if (a % 2 != 0) {
sum = chs[a % 2] + sum;
}
if (isNegetive) {
System.out.println("-" + sum);
} else {
System.out.println(sum);
}
}
}
}

同理就可以来解p2051的问题

java中,有直接进行进制转换的函数

十进制转成十六进制: 
Integer.toHexString(int i) 
十进制转成八进制 
Integer.toOctalString(int i) 
十进制转成二进制 
Integer.toBinaryString(int i) 
十六进制转成十进制 
Integer.valueOf("FFFF",16).toString() 
八进制转成十进制 
Integer.valueOf("876",8).toString() 
二进制转十进制 
Integer.valueOf("0101",2).toString() 


0 0
原创粉丝点击