欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-15 09:28:46
...

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

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());
        }
    }
}

相关标签: java