自己实现10进制转2进制和16进制

 1 public class Test {
 2  
 3     public static void main(String[] args) {
 4         System.out.println(toBinary(9));
 5         System.out.println(toHex(559));
 6         System.out.println(Integer.toBinaryString(9));
 7         System.out.println(Integer.toHexString(559));
 8       /*1001
 9         22F
10         1001
11         22f*/
12     }
13      
14     public static String toBinary(int n){
15         StringBuilder temp = new StringBuilder();
16         while(n/2 >=1 || n%2 == 1){//除2取余, (|| n%2 == 1) 在次为了补上最后一个0或者1
17             temp.append(n%2);
18             n = n/2;
19         }
20         return temp.reverse().toString();
21     }
22     /**
23      10进制转16进制:
24         将给定的十进制整数除以基数16,余数便是等值的16进制的最低位。
25         将上一步的商再除以基数16,余数便是等值的16进制数的次低位。
26         重复上一步骤,直到最后所得的商等于0为止。各次除得的余数,便是16进制各位的数,最后一次的余数是最高位
27      */
28     public static String toHex(int n){
29         /*思路:除16取余*/       
30         StringBuilder temp = new StringBuilder();
31         while(n/16 >= 1){
32             int aa = n/16;
33             int bb = n%16;
34             //0123456789 10 11 12 13 14 15
35             //0123456789 A  B  C  D  E  F
36             String str = "";
37             if(bb == 10){
38                 str = "A";
39             }else if(bb == 11){
40                 str = "B";
41             }else if(bb == 12){
42                 str = "C";
43             }else if(bb == 13){
44                 str = "D";
45             }else if(bb == 14){
46                 str = "E";
47             }else if(bb == 15){
48                 str = "F";
49             }else{
50                 str = bb+"";
51             }
52             temp.append(str);
53             n = aa;
54             if(n/16 < 1){//补上最后一位
55                 temp.append(n);
56             }
57         }
58         return temp.reverse().toString();
59     }
60 }

 

转载于:https://www.cnblogs.com/pengw/p/3951178.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值