十进制转二进制,十进制转十六进制

十进制转二进制,十进制转十六进制

1.十进制转二进制

题目分析:

可以采用移位运算符">>“来解决问题,例如定义一个int型整数将其转换为二进制,由于int型整数占内存长度为4字节(32b),可以进行32次循环,首次循环用定义的整数>>31运算后&1输出此时的结果,然后后面每次循环时”>>"运算后的数每次减1,直到>>运算后的数为0。此时得到的输出为该整数的二进制数。(如果定义的整数为byte,short,long行的话只改变循环开始的数即下面代码中的初始值分别为:7,15,63)

public class TenChangeTwo {
    public static void main(String[] args) {
        int a = 234;
        for (int i = 31; i >=0; i--) {
            int num = a >> i & 1;
            System.out.print(num);
        }
    }
}

2.十进制转十六进制

题目分析:

从键盘随便输入一个整数,先判断该数是否为0,如果是的话直接输出,否则进入循环当中,while循环条件为该数不为0,进入循环后对该数取余(int b = a%16),如果b小于10直接将其逆序存入StringBuilder类创建的对象当中,如果b大于10将b+‘A’-10进行强制类型转换后逆序存入StringBuilder类创建的对象当中,判断后对b进行除16运算,如果大于0的话继续进行循环,直到b为0。最后输出StringBuilder类创建的对象里的东西(StringBuilder.reverse().toString())。

import java.util.*;
public class TenChangeSixteen {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        StringBuilder sb  = new StringBuilder();
        if (n ==0){
            System.out.println(0);
        }
        else {
            int count=0;
            while (n!=0){
                int a = n % 16;
                if (a < 10){
                    sb.append(a);
                }
                else {
                    sb.append((char)(a + 'A' - 10));
                    //采用强制类型转换可简化代码
           /*switch(a){
               case 10 :sb.append('A');count++;break;
               case 11 :sb.append('B');count++;break;
               case 12 :sb.append('C');count++;break;
               case 13 :sb.append('D');count++;break;
               case 14 :sb.append('E');count++;break;
               case 15 :sb.append('F');count++;break;
                     }
*/
                }
                n = n / 16;
            }
            System.out.print(sb.reverse().toString());
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值