数组(九)--十进制转换为十六进制
来源:互联网 发布:淘宝卖家店铺被冻结 编辑:程序博客网 时间:2024/05/29 17:52
方法一:
1、以60为例:(假设为32位)
60 除以 16 商 3 余。。。。。。。。12
3 除以 16 商 0 余。。。。。。。。。3
2、然后将余数倒过来,两位数的余数则转化为字母。
数字与字母对应:
3、60的十六进制为:0000003C10-----A
11-----B
12-----C
13-----D
14-----E
15-----F
方法二:
通过&运算和 右移运算来求解:
步骤如下:
1、先写出60的32位的二进制;
2、为了求出60的最后四位,需要和15的二进制进行&运算,如下图的第一步;
3、然后将60的二进制右移四位,再与15的二进制进行&运算,又可以求出最后四位;
4、如此,循环第3步,就可以每四位对应的十六进制;
5、由于当数字大于9时用字母A,B,C,D,E,F来表示;所以需要把大于9的数字转换为对应的ASCII码值;
6、转换公式为:(char)(temp-10+'A'),其中temp为10,11,12,13,14,15这几个值中的一个;
7、下图为上述步骤的解析,以及程序;
public class Demo14 {public static void main(String[] args){toHex(60);toHex_2(-60);}/* * 十进制--->十六进制 */public static void toHex(int num){ //这个十六进制的转换的是正数StringBuffer ss=new StringBuffer();for(int x=0;x<8;x++){ //之所以小于8,是因为32为的十六进制只有8位int temp=num & 15;if(temp>9)//System.out.println((char)(temp-10+'A'));ss.append((char)(temp-10+'A'));else //System.out.println(temp);ss.append(temp);num=num>>>4; //右移四位}System.out.println(ss.reverse());}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=arr.length;while(num!=0){int temp=num & 15;arr[--pos]=chs[temp];num=num>>>4;}//System.out.println("pos="+pos);for(int x=pos;x<arr.length;x++){System.out.print(arr[x]);}}}
注意:一般情况下右移只需要两个大于号即 >>,但此程序写了三个>>>,是因为如果是负数的时候,它的首位是 1,不论怎么右移都是1,故>>>表示无符号右移,即不考虑符号的影响。
输出为:0000003C
阅读全文
0 0
- 数组(九)--十进制转换为十六进制
- 十进制转换为十六进制
- 十六进制转换为十进制
- 十进制转换为十六进制
- 十进制转换为十六进制
- 十六进制转换为十进制
- 十六进制转换为十进制
- 十六进制转换为十进制
- 十进制转换为十六进制
- 十进制转换为十六进制
- 十六进制转换为十进制
- 十六进制转换为十进制
- 十六进制转换为十进制
- 十进制转换为十六进制
- 十进制转换为十六进制
- 十六进制转换为十进制
- 十进制转换为十六进制
- 十进制转换为十六进制
- java的jar打包成exe文件
- 深入理解JVM之类文件结构
- Maximum Product(简单枚举)
- CSS3 二维变形
- Java浅克隆与深克隆
- 数组(九)--十进制转换为十六进制
- 解决mysql Navicat 出错:1130-host . is not allowed to connect to this MySql server
- linux关于bashrc与profile的区别
- Maven详解之仓库------本地仓库、远程仓库
- 实验4:栈和队列的基本操作实现及其应用2
- HTTP状态码知道哪些
- 对于超图划分中的粗化部分的理解
- 图书馆管理系统
- springmvc 返回 json