整型有4种进制形式:
1.十进制: 都是以0-9这九个数字组成,不能以0开头。
2.二进制: 由0和1两个数字组成。
3.八进制: 由0-7数字组成,为了区分与其他进制的数字区别,开头都是以0开始。
4.十六进制:由0-9和A-F组成。为了区分于其他数字的区别,开头都是以0x开始。
1、十进制整数转换成二进制
(1)十进制转换成二进制的转换原理:除以2,反向去余数,指导商为零为止。
(2)具体做法:
将某个十进制数除2得到的整数部分保留,作为第二次除2时的被除数,得到的余数依次记下,重复上述步骤,直到整数部分为0就结束,将所有得到的余数最终逆序输出,则为该十进制对应的二进制数。
例如:9(十进制)→1001(二进制)
2、十进制整数转换成八进制
1)转换原理:除以8,反向取余数,直到商为0终止。
(2)具体步骤与二进制一样
例如:十进制数796转换成八进制数:
将796除8取得第一个余数为4,将除8得到的整数部分99作为第二次的被除数,重复上述步骤,直至最终整数部分为0就结束。将取得的所有余数逆序输出
则为:796–>1434
3、十进制转十六进制
(1)转换原理:除以16,反向取余数,直到商为0终止。
(2)具体步骤也和二进制、八进制一样,重复上述做法即可得到十六进制数。
例如:十进制数796转换为十六进制数
即为:796–>31c
需要注意的是,十六进制数是由0-9和A-F(或者a-f)组成的,A相当于十进制中的10,B相当于11,依次类推,F相当与15,上述事例中取得的余数12即为十六进制中的c
4、代码实现
package HomeWork;
import java.util.Scanner;
/**
* @Author: lly
* @Description: 输出一个整数的二进制数、八进制数、十六进制数。
* @DateTime: 2022/7/20 19:34
**/
public class work18 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个整数");
int num = sc.nextInt();
System.out.println("1、转换成二进制");
System.out.println("2、转换成八进制");
System.out.println("3、转换成十六进制");
System.out.print("请输入命令:");
int command = sc.nextInt();
switch (command){
case 1:
// 转换成二进制
convertToBinary(num);
break;
case 2:
// 转换成八进制
convertToOctal(num);
break;
case 3:
// 转换成十六进制
convertToHex(num);
break;
}
}
private static void convertToHex(int num) {
int[] nums =new int[100];
int index = 0;
for (int i = num; i >0 ; i/=16,index++) {
nums[index] = i%16;
}
for (int i =index-1; i>=0; i--) {
if (nums[i]==10){
System.out.println("A");
}else if (nums[i]==11){
System.out.println("B");
}else if (nums[i]==12){
System.out.println("C");
}else if (nums[i]==13){
System.out.println("D");
}else if (nums[i]==14){
System.out.println("E");
}else if (nums[i]==15){
System.out.println("F");
}else {
System.out.print(nums[i]);
}
}
}
/**
* @Author: lly
* @Description: 十进制转八进制
* @DateTime: 2022/7/20 19:24
* @Params: [num]
* @Return void
*/
private static void convertToOctal(int num) {
int[] nums =new int[100];
int index = 0;
for (int i = num; i >0 ; i/=8,index++) {
nums[index] = i%8;
}
for (int i =index-1; i>=0; i--) {
System.out.print(nums[i]);
}
}
/**
* @Author: lly
* @Description: 十进制转换成二进制
* @DateTime: 2022/7/20 19:20
* @Params: [num]
* @Return void
*/
private static void convertToBinary(int num) {
int[] nums =new int[100];
int index = 0;
for (int i = num; i >0 ; i/=2,index++) {
nums[index] = i%2;
}
for (int i =index-1; i>=0; i--) {
System.out.print(nums[i]);
}
}
}
运行结果实例