Java数组-数组的应用-应用查表法将十进制整数转化为16进制-2
2016-09-29 16:32
459 查看
之前的文章《Java数组-数组的应用 十进制整数转化为16进制 》程序转化出来的16进制,输出的结构为倒序,还需要多程序进行修改
/*
数组的应用:
获取一个整数的16进制表现形式。
*/
class TenToHex
{
public static void main(String[] args)
{
System.out.println("Hello World!");
toHex(60);
toHex_2(60);
toHex_3(60);
}
public static void toHex(int num)
{
for(int x=0;x<8;x++) //一个int整型变量有32个比特(bit),4个字节(byte)
{
int temp = num & 15;
//15是4个比特表示的最大整数,num与15作与运算,结果为num的最后4个比特位,4位二进制表示一位16进制
if(temp>9)
System.out.println((char)(temp-10+'A'));
else
System.out.println(temp);
num = num >>> 4;
//对二进制进行无符号右移四位,将已经转化为16进制的二进制移去,对剩余的二进制位进行循环转化
}
}
/*
在这里可以考虑使用数组。那么什么时候使用数组呢?
如果数据出现了对应关系,而且对应关系的一方是有序的数字编号,并可以作为角标使用。
这时就必须要想到数组的使用
本例中的转化为16进制隐含着数据的对应关系。
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
0,1,2,3,4,5,6,7,8,9, 10,11,12,13,14,15
就可以将这些数据存储到数组中
根据运算结果作为的角标直接去查数组中对应的元素即可。
这种方式称为查表法。
*/
//查表法应用
public static void toHex_1(int num)
{
//定义一个对应关系表
char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
for(int x=0;x<8;x++)
{
int temp = num & 15;
System.out.print(chs[temp]);
num = num >>> 4;
}
}//输出的结果为倒序,需要对该程序进行改进
/*查表法中会查到比较多的数据时,可以考虑从先将数据存储起来,之后再进行操作。
所以定义一个数组,作为临时容器,存储查表法查到的数据。
下面的程序是对上面查表法的改进
*/
public static void toHex_2(int num)
{
//定义一个对应关系表
char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
//定义一个临时容器
char[] arr = new char[8];
int pos = 0;
while(num!=0)
{
int temp = num & 15;
arr[pos++] = chs[temp];
num = num >>> 4;
}
/*
//这里下面的输出和预想不同
System.out.println(arr.length);
for(int x=0;x<arr.length;x++)
{
System.out.print(arr[x]+",");
}
//在cmd下的输出结果为C,3, , , , , , ,
//在editplus下的输出结果为C,3,
*/
//修改为
for (int x=0;x<pos ;x++ )
{
System.out.print(arr[x]+",");
}//cmd下输出结果为C,3,空位没有了
System.out.println();
}
//下面是将上面的输出倒序的程序修改为16进制正序输出的程序
public static void toHex_3(int num)
{
//定义一个对应关系表
char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
//定义一个临时容器
char[] arr = new char[8];
int pos = arr.length;//pos的位置指在数组的尾部
while(num!=0)
{
int temp = num & 15;
arr[--pos] = chs[temp];
num = num >>> 4;
}
for(int x=pos;x<arr.length;x++)
{
System.out.print(arr[x]);
}
}
}
/*
数组的应用:
获取一个整数的16进制表现形式。
*/
class TenToHex
{
public static void main(String[] args)
{
System.out.println("Hello World!");
toHex(60);
toHex_2(60);
toHex_3(60);
}
public static void toHex(int num)
{
for(int x=0;x<8;x++) //一个int整型变量有32个比特(bit),4个字节(byte)
{
int temp = num & 15;
//15是4个比特表示的最大整数,num与15作与运算,结果为num的最后4个比特位,4位二进制表示一位16进制
if(temp>9)
System.out.println((char)(temp-10+'A'));
else
System.out.println(temp);
num = num >>> 4;
//对二进制进行无符号右移四位,将已经转化为16进制的二进制移去,对剩余的二进制位进行循环转化
}
}
/*
在这里可以考虑使用数组。那么什么时候使用数组呢?
如果数据出现了对应关系,而且对应关系的一方是有序的数字编号,并可以作为角标使用。
这时就必须要想到数组的使用
本例中的转化为16进制隐含着数据的对应关系。
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
0,1,2,3,4,5,6,7,8,9, 10,11,12,13,14,15
就可以将这些数据存储到数组中
根据运算结果作为的角标直接去查数组中对应的元素即可。
这种方式称为查表法。
*/
//查表法应用
public static void toHex_1(int num)
{
//定义一个对应关系表
char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
for(int x=0;x<8;x++)
{
int temp = num & 15;
System.out.print(chs[temp]);
num = num >>> 4;
}
}//输出的结果为倒序,需要对该程序进行改进
/*查表法中会查到比较多的数据时,可以考虑从先将数据存储起来,之后再进行操作。
所以定义一个数组,作为临时容器,存储查表法查到的数据。
下面的程序是对上面查表法的改进
*/
public static void toHex_2(int num)
{
//定义一个对应关系表
char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
//定义一个临时容器
char[] arr = new char[8];
int pos = 0;
while(num!=0)
{
int temp = num & 15;
arr[pos++] = chs[temp];
num = num >>> 4;
}
/*
//这里下面的输出和预想不同
System.out.println(arr.length);
for(int x=0;x<arr.length;x++)
{
System.out.print(arr[x]+",");
}
//在cmd下的输出结果为C,3, , , , , , ,
//在editplus下的输出结果为C,3,
*/
//修改为
for (int x=0;x<pos ;x++ )
{
System.out.print(arr[x]+",");
}//cmd下输出结果为C,3,空位没有了
System.out.println();
}
//下面是将上面的输出倒序的程序修改为16进制正序输出的程序
public static void toHex_3(int num)
{
//定义一个对应关系表
char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
//定义一个临时容器
char[] arr = new char[8];
int pos = arr.length;//pos的位置指在数组的尾部
while(num!=0)
{
int temp = num & 15;
arr[--pos] = chs[temp];
num = num >>> 4;
}
for(int x=pos;x<arr.length;x++)
{
System.out.print(arr[x]);
}
}
}
相关文章推荐
- Java数组-数组的应用十进制整数转化为16进制
- Java 将字节数组转化为16进制的多种方案
- Java 将字节数组转化为16进制的多种方案
- JAVA byte数组转化为16进制字符串输出
- java byte型数组和16进制字符串互相转化方法
- Java 将字节数组转化为16进制的多种方案
- java读取文件以字节流的形式读取 然后转化为字节流数组,最后经过SHA1加密生成返回16进制字符串存入数据库
- Java 将字节数组转化为16进制的多种方案
- JAVA byte数组转化为16进制字符串输出
- Java编程:数组的应用(十进制转换成二进制)
- Java 将字节数组转化为16进制的多种方案
- Java 将字节数组转化为16进制的多种方案
- java中字节数组抓转化为16进制字符串
- 十六进制字符数组转化为十进制整数
- Java 将字节数组转化为16进制的多种方案
- Java 将字节数组转化为16进制的多种方案
- Java 将字节数组转化为16进制的多种方案
- 输入一个十进制整数,设计递归函数,将该整数转化为一个二进制数。 思考: 如何将一个十进制数转化成一个8进制和16进制数。
- JAVA byte数组转化为16进制字符串输出
- Java 将字节数组转化为16进制的多种方案