public class Conversion {
public Conversion(){}
//十进制转换二进制思路为 :进将数据与1,得到最末位二进制数,在将原数据无符号向右移1并赋值,
//重复至多32次得到的数存入数组中在反转遍历就是这个数据的二进制数。
public static void binary(int x){
int index = 0;//将数组索引初始化
for (int a = x;a != 0;a = a >>> 1)//根据原理得到数组的长度
{
index++;
}
int[] arr = new int[index];
for(int i = 0;x != 0;i++)//for循环中得出一组二进制完成数据存入数组
{
int y = x & 1;
arr[i] = y;
x = x >>> 1;
}
System.out.print("二进制的值:");
for(int b = index-1;0 <= b;b--)//反转遍历并输出二进制的值
{
System.out.print(arr[b]);
}
System.out.println();
}
public static void octal(int x){
//十进制转换八进制思路为:进将数据与7,得到最末位八进制数,在将原数据无符号向右移3并赋值,
//重复至多32次得到的数存入数组中在反转遍历就是这个数据的八进制数。
int index = 0;
for (int a = x;a != 0;a = a >>> 3){
index++;
}
int[] arr = new int[index];
for(int i = 0;x != 0;i++){
int y = x & 7;
arr[i] = y;
x = x >>> 3;
}
System.out.print("八进制的值:");
for(int b = index-1;0 <= b;b--){
System.out.print(arr[b]);
}
System.out.println();
}
public static void hex(int x){
//十进制转换十六进制思路为:进将数据与15,得到最末位十六进制数,在将原数据无符号向右移4并赋值,
//重复至多32次得到的数存入数组中在反转遍历就是这个数据的十六进制数。
String s = new String();//创建String对象
int index = 0;
for (int a = x;a != 0;a = a >>> 4)
{
index++;
}
String[] crr = new String[index];
for(int i = 0;x != 0;i++)//由于十六进制需要用到单词,需要字符转换,但是前面的忘了
{
int y = x & 15;
if(y<10){
crr[i] = s.valueOf(y);//将数组int转换为字符串String
}else if(y >= 10){
String[] car = new String[]{"A","B","C","D","E","F"};
crr[i] = car[y-10] ;//
}
x = x >>> 4;
}
System.out.print("十六进制的值:");
for(int b = index-1;0 <= b;b--){
System.out.print(crr[b]);
}
System.out.println();
}
}
|
|