十进制转二进制,十进制转十六进制
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());
}
}
}