二进制:
将每个余数倒着输出来,怎样实现,s=num%2+s;每次得到的数都进入到等号右边的s中,那么第二个余数就是num%2,加在s的前面,这就是字符串的拼接,切记不能交换两者的位置。
八进制:
同二进制一样
十六进制:
十六进制不外乎就是写一个数组:
char[] arr = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
假如给一个17这样的十进制数,将其转换成十六进制,只需要数17,最后第十七次落在数组上的字符加上数的次数。笔者定义的y就是最后落在数组上的位置。
package com.kaifamiao.day13CDSN;
import java.util.Scanner;
public class JinZhi {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请你输入一个十进制数:");
long n = sc.nextLong();
JinZhi jz=new JinZhi();
System.out.println("二进制数为:"+jz.twoWay(n));
System.out.println("---------------------------------");
jz.eightWay(n);
System.out.println("八进制数为:"+jz.eightWay(n));
System.out.println("---------------------------------");
System.out.println("十六进制为:"+jz.sixteen(n));
}
//二进制
public String twoWay(long num){
String s="";
while (num!=0){
s=num%2+s;
num=num/2;
}
return s;
}
//八进制
public String eightWay(long num){
String s="";
while (num!=0){
s=num%8+s;
num=num/8;
}
return s;
}//十六进制
public String sixteen(long num){
String v="";
char s=0;
long y;
char[] arr = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
while (num!=0){
y=num%16;
num=num/16;
s=arr[(int)y];
v=s+v;
}
return v;
}
}