程序中的十进制转2进制,和16进制值的体现

public class DemoBinary {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  System.out.println(getBinary(8));
  System.out.println(getHex(60));
  System.out.println(getHexByIndex(60));
 }

 /**
  *
  * 十进制转二进制的程序体现的过程
  */
 public static String getBinary(int num) {
  StringBuilder sb = new StringBuilder();
  while (num > 0) {
   sb.append(num % 2);
   num = num / 2;
  }

  return sb.reverse().toString();
 }

 /**
  * 十进制转十六进制的体现过程
  */
 public static String getHex(int num) {
  StringBuilder sb = new StringBuilder();
  // 注意在内存中都是32 ,二进制中每4为来换算16进制,所以有8个4对
  for (int i = 0; i < 8; i++) {
   // num & 15 就能获取最后的4位 如果大于9就是16进制值中的ABCDEF
   int temp = num & 15;
   if (temp > 9) {
    sb.append((char) (temp - 10 + 'A'));
   } else {
    sb.append(temp);
   }

   num = num >>> 4;
  }

  return sb.reverse().toString();
 }

 /**
  *
  * 查表法(十进制转换十六进制的转换)
  *  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 与其相对于的下标
  * 每一次&15后的值作为索引去查询
  * 根据此规律,我可以将十六进制中的元素存储到数组中 这样比 -10+'A'更容易理解和方便
  */
 public static String getHexByIndex(int num) {
  char[] hexs={'0', '1', '2', '3', '4' ,'5' ,'6' ,'7' ,'8' ,'9', 'A' , 'B' , 'C' , 'D' , 'E' , 'F'};
  StringBuilder sb=new StringBuilder();
  for (int i = 0; i < 8; i++) {
   int temp=num & 15;
   sb.append(hexs[temp]);
   num=num>>>4;
  }
  
 
  return sb.reverse().toString();
 }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值