实现 十进制整数转换成二进制,八进制,十六进制

整型有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]);
        }
    }
}

运行结果实例

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值