• 【JavaSE专栏25】进制转换的那些事,十进制转R进制、R进制转十进制是什么操作?


    作者主页Designer 小郑
    作者简介:Java全栈软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发(Vue、SpringBoot和微信小程序)、系统定制、远程技术指导。CSDN学院、蓝桥云课认证讲师,全栈领域优质创作者。热爱技术、专注业务、开放合作、乐于分享,期待你我共同成长!
    主打方向:Vue、SpringBoot、微信小程序

    本文对 Java 中的进制转换流程进行了介绍,讲解了十进制转R进制、R进制转十进制的操作过程,并给出了样例代码。


    一、什么是进制转换

    1.1 进制

    进制是一种数学表示方法,用于表示数字的基数和位数。在常见的数学系统中,我们使用十进制系统,也称为基数为 10 10 10 的进制系统。它使用了 0 0 0 - 9 9 9 的十个数字来表示所有的数字。例如,数字 42 42 42 在十进制系统中表示为 42 42 42,其中 4 4 4 代表 4 4 4 个十, 2 2 2 代表 2 2 2 个一。

    除了十进制,还有其他常见的进制系统,如二进制(基数为 2 2 2)、八进制(基数为 8 8 8)和十六进制(基数为 16 16 16)。二进制只使用 0 0 0 1 1 1 两个数字来表示所有的数字,八进制使用 0 0 0 - 7 7 7 的八个数字,十六进制使用 0 0 0 - 9 9 9 A A A - F F F 的十六个数字( A A A 代表 10 10 10 B B B 代表 11 11 11 ,以此类推)。

    进制在计算机科学中非常重要,因为计算机以二进制的方式进行计算和存储数据。进制转换是将一个数值从一种进制转换为另一种进制的过程,这在计算机编程和数据处理中经常用到。

    1.2 进制转换

    进制转换是指将一个数值表达式从一种进制转换为另一种进制的过程。在计算机科学和数学中,最常见的进制是 十进制(decimal)二进制(binary)八进制(octal)十六进制(hexadecimal)

    进制转换可以将一个数值在不同进制之间表示,以便更方便地进行计算、存储和传输

    常见的进制转换方法包括以下几类。

    1. 二进制转换为十进制:将每一位的二进制数乘以对应的权值,然后将所有结果相加。
    2. 十进制转换为二进制:使用除 2 2 2 取余法,将十进制数反复除以 2 2 2,直到商为 0 0 0,然后将余数倒序排列。
    3. 十进制转换为八进制或十六进制:使用除以 8 8 8 16 16 16 取余法,将十进制数反复除以 8 8 8 16 16 16,直到商为 0 0 0,然后将余数倒序排列。
    4. 八进制或十六进制转换为十进制:将每一位的八进制或十六进制数乘以对应的权值,然后将所有结果相加。
    5. 八进制或十六进制转换为二进制:将每一位的八进制或十六进制数转换为对应的二进制数。
    6. 二进制转换为八进制或十六进制:将二进制数按照每 3 3 3 位或 4 4 4 位进行分组,转换为对应的八进制或十六进制数。

    进制转换在计算机科学中非常重要,特别是在处理二进制数据时

    例如,计算机中的数据存储和处理通常是以二进制形式进行的,但在人类的角度来看,使用十进制更加直观。因此,进制转换可以帮助我们在不同进制之间进行数据的转换和理解。

    在这里插入图片描述


    二、10进制转R进制

    下面是一个示例代码,展示了如何将一个十进制数转换为指定进制(R进制)的数。

    public class DecimalToRBase {
        public static void main(String[] args) {
            int decimalNumber = 153; // 十进制数
            int base = 16; // R进制
    
            String rBaseNumber = convertDecimalToRBase(decimalNumber, base);
            System.out.println(decimalNumber + " 的 " + base + " 进制表示为: " + rBaseNumber);
        }
    
        private static String convertDecimalToRBase(int decimalNumber, int base) {
            StringBuilder rBaseNumber = new StringBuilder();
    
            while (decimalNumber > 0) {
                int remainder = decimalNumber % base;
                rBaseNumber.insert(0, getRBaseDigit(remainder));
                decimalNumber /= base;
            }
    
            return rBaseNumber.toString();
        }
    
        private static char getRBaseDigit(int digitValue) {
            if (digitValue < 10) {
                return (char) (digitValue + '0');
            } else {
                return (char) (digitValue - 10 + 'A');
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    这个示例将十进制数 153 153 153 转换为 16 16 16 进制数,输出结果为 153 的 16 进制表示为: 99。你可以根据需要修改 decimalNumberbase 的值,将其他十进制数转换为不同进制的数。

    在这里插入图片描述


    三、R进制转10进制

    下面是一个示例代码,用于将 R进制 数转换为 10 10 10 进制数。

    import java.util.Scanner;
    
    public class RadixConversion {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.print("请输入R进制数: ");
            String rNum = scanner.next();
            System.out.print("请输入R的值: ");
            int r = scanner.nextInt();
            
            int decimalNum = toDecimal(rNum, r);
            System.out.println("转换后的十进制数为: " + decimalNum);
        }
        
        // 将R进制数转换为10进制数
        public static int toDecimal(String rNum, int r) {
            int decimalNum = 0;
            int power = 1;
            
            for (int i = rNum.length() - 1; i >= 0; i--) {
                int digit = Character.isDigit(rNum.charAt(i)) ? rNum.charAt(i) - '0' : rNum.charAt(i) - 'A' + 10;
                decimalNum += digit * power;
                power *= r;
            }
            
            return decimalNum;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    在这个示例代码中,我们通过用户输入获取了一个 R进制 的数和 R R R 的值,然后调用toDecimal方法将R进制数转换为 10 10 10 进制数,并输出结果。

    注意,在转换过程中,我们将R进制数从右往左进行遍历,将每一位的数值乘以相应的权重后累加到结果中,权重从 1 1 1 开始,每次乘以 R R R 的值。在计算过程中,如果遇到字母,则将其转换为相应的数值,字母A对应的数值为 10 10 10,字母 B 对应的数值为 11 11 11,以此类推。

    在这里插入图片描述


    四、总结

    本文对 Java 中的进制转换流程进行了介绍,讲解了十进制转R进制、R进制转十进制的操作过程,并给出了样例代码。在下一篇博客中,将讲解 Java 中数组的定义方法。

    在这里插入图片描述

  • 相关阅读:
    Mapbox 与 Babylon.js 可视化 添加地形
    这个macOS神器,让爱怀旧的人直呼:“爷青回!”
    浅谈wheel滚轮事件
    AWS 使用Lambda实现钉钉机器人报警
    leetCode 746. 使用最小花费爬楼梯
    【python海洋专题八】Cartopy画地形水深图的contourf填充间隔数调整
    【Java框架】Spring5
    FastAPI 作为H5中流式输出的后端
    sql基础
    ArcGIS API for Android中针对MapView设置setOnTouchListener监听
  • 原文地址:https://blog.csdn.net/qq_41464123/article/details/131547919