1.十进制整数转换为二进制整数
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
如:
254 = (11111110)B
254 / 2 = 127 ……余0
127 / 2 = 63 ……余1
63 / 2 = 31 ……余1
31 / 2 = 15 ……余1
15 / 2 = 7 ……余1
7 / 2 = 3 ……余1
3 / 2 = 1 ……余1
1 / 2 = 0 ……余1
代码实现:
package com.Test;
import java.util.Scanner;
public class Test {
//主方法
public static void main(String[] args){
Scanner in = new Scanner(System.in); //创建一个Scanner类的对象in
System.out.println("请输入一个十进制整数:");
int num1 = in.nextInt(); //从键盘接收一个整数
mod2(num1); //调用十进制数转二进制数的方法
}
//十进制数转二进制数的方法
public static int mod2(int num){
if (num == 0){ //递归边界
return num;
}
mod2(num / 2); //递归调用方法自身
System.out.print(num % 2); //输出每次递归num模2的余数
return 0;
}
}
原理:
二进制的基数为2,十进制化二进制时所除的2就是它的基数。其中涉及到位权的概念。某进制计数制中各位数字符号所表示的数值表示该数字符号值乘以一个与数字符号有关的常数,该常数称为 “位权 ” 。位权的大小是以基数为底,数字符号所处的位置的序号为指数的整数次幂。十进制数的百位、十位、个位、十分位的权分别是10的2次方、10的1次方、10的0次方,10的-1次方。二进制数就是2的n次幂。
(11111110)B转化为十进制数A:
A = 0x2^0+1x2^1+1x2^2+1x2^3+1x2^4+1x2^5+1x2^6+1x2^7 = 254
2.十进制整数转换为十六进制整数
十进制整数转换为十六进制整数采用"除16取余,逆序排列"法。具体做法是:用16整除十进制整数,可以得到一个商和余数;再用16去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。(十六进制中0-9用0-9表示,10-15用A-F表示)
如:
254 = (FE)16
254 / 16 = 15 ……余14(E)
15 / 16 = 0……余15(F)
代码实现:
package com.Test;
import java.util.Scanner;
public class Test {
//主方法
public static void main(String[] args){
Scanner in = new Scanner(System.in); //创建一个Scanner类的对象in
System.out.println("请输入一个十进制整数:");
int num1 = in.nextInt(); //从键盘接收一个整数
mod16(num1); //调用十进制数转二进制数的方法
}
//十进制数转十六进制数的方法
public static int mod16(int num) {
int Tag;
if (num == 0) { //递归边界
return num;
}
mod16(num / 16); //递归调用方法自身
Tag = num % 16;
if (Tag > 9) {
System.out.printf("%c", Tag - 10 + 'A'); //大于9-15用A-F表示
}
else {
System.out.print(Tag); //输出每次递归num模16的余数
}
return 0;
}
}
原理:
十六进制的基数为16,十进制化十六进制时所除的16就是它的基数。其中涉及到位权的概念。某进制计数制中各位数字符号所表示的数值表示该数字符号值乘以一个与数字符号有关的常数,该常数称为 “位权 ” 。位权的大小是以基数为底,数字符号所处的位置的序号为指数的整数次幂。十进制数的百位、十位、个位、十分位的权分别是10的2次方、10的1次方、10的0次方,10的-1次方。十六进制数就是16的n次幂。
(FE)16转化为十六进制A:
A = 14x16^0+15x16^1 = 254