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

目录

1、十进制整数转换成二进制 

 2、十进制整数转换成八进制

3、十进制转十六进制

4、代码实现


今天来总结一下各种进制转换问题,详细齐全易于理解,希望对你有帮助哦!

各种进制之间的相互转换

先从我们最熟悉的十进制入手吧,其他进制与十进制的转换方法都是一样的。

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

运行结果实例

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

重生之我是泰勒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值