首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【JavaSE专栏25】进制转换的那些事,十进制转R进制、R进制转十进制是什么操作?

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

作者头像
Designer 小郑
发布2023-08-02 07:58:50
发布2023-08-02 07:58:50
72700
代码可运行
举报
文章被收录于专栏:跟着小郑学JAVA跟着小郑学JAVA
运行总次数:0
代码可运行

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

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


一、什么是进制转换

1.1 进制

进制是一种数学表示方法,用于表示数字的基数和位数。在常见的数学系统中,我们使用十进制系统,也称为基数为

10

的进制系统。它使用了

0

-

9

的十个数字来表示所有的数字。例如,数字

42

在十进制系统中表示为

42

,其中

4

代表

4

个十,

2

代表

2

个一。

除了十进制,还有其他常见的进制系统,如二进制(基数为

2

)、八进制(基数为

8

)和十六进制(基数为

16

)。二进制只使用

0

1

两个数字来表示所有的数字,八进制使用

0

-

7

的八个数字,十六进制使用

0

-

9

A

-

F

的十六个数字(

A

代表

10

B

代表

11

,以此类推)。

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

1.2 进制转换

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

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

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

  1. 二进制转换为十进制:将每一位的二进制数乘以对应的权值,然后将所有结果相加。
  2. 十进制转换为二进制:使用除
2

取余法,将十进制数反复除以

2

,直到商为

0

,然后将余数倒序排列。

  1. 十进制转换为八进制或十六进制:使用除以
8

16

取余法,将十进制数反复除以

8

16

,直到商为

0

,然后将余数倒序排列。

  1. 八进制或十六进制转换为十进制:将每一位的八进制或十六进制数乘以对应的权值,然后将所有结果相加。
  2. 八进制或十六进制转换为二进制:将每一位的八进制或十六进制数转换为对应的二进制数。
  3. 二进制转换为八进制或十六进制:将二进制数按照每
3

位或

4

位进行分组,转换为对应的八进制或十六进制数。

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

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


二、10进制转R进制

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

代码语言:javascript
代码运行次数:0
运行
复制
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');
        }
    }
}

这个示例将十进制数

153

转换为

16

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


三、R进制转10进制

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

10

进制数。

代码语言:javascript
代码运行次数:0
运行
复制
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;
    }
}

在这个示例代码中,我们通过用户输入获取了一个 R进制 的数和

R

的值,然后调用toDecimal方法将R进制数转换为

10

进制数,并输出结果。

注意,在转换过程中,我们将R进制数从右往左进行遍历,将每一位的数值乘以相应的权重后累加到结果中,权重从

1

开始,每次乘以

R

的值。在计算过程中,如果遇到字母,则将其转换为相应的数值,字母A对应的数值为

10

,字母 B 对应的数值为

11

,以此类推。


四、总结

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、什么是进制转换
    • 1.1 进制
    • 1.2 进制转换
  • 二、10进制转R进制
  • 三、R进制转10进制
  • 四、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档