news 2026/11/5 8:43:18

【Java基础知识】进制转换

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Java基础知识】进制转换

文章目录

  • 一、进制的基本概念
  • 二、二进制与十进制的相互转换
    • 1. 十进制转二进制
    • 2. 二进制转十进制
  • 三、八进制与其他进制的转换
    • 1. 二进制与八进制的转换
      • ①二进制转八进制
      • ②八进制转二进制
    • 2. 八进制与十进制的转换
      • ①八进制转十进制
      • ②十进制转八进制
  • 四、十六进制与其他进制的转换
    • 1. 二进制与十六进制的转换
      • ①二进制转十六进制
      • ②十六进制转二进制
    • 2. 十六进制与十进制的转换
      • ①十六进制转十进制
      • ②十进制转十六进制
  • 五、Java 中进制的表示与转换
    • 1. 不同进制的表示方法
    • 2. 进制转换的 API 方法

摘要:本文系统讲解计算机中进制的基本概念与相互转换方法。首先介绍二进制、八进制、十六进制与十进制的基数及存在意义;随后详细演示二进制与十进制、八进制、十六进制之间的转换,包括按权展开求和法、除基取余法以及分组换算技巧,并配有完整计算示例;最后结合 Java 语言,说明不同进制字面量的表示方式(0b、0、0x 前缀)以及Integer.toBinaryString、Integer.toOctalString、Integer.toHexString、Integer.parseInt等内置 API 的使用。适合初学者快速掌握进制转换原理与 Java 实战应用。

一、进制的基本概念

在计算机科学中,进制是表示数字的方式,不同的进制使用不同的基数(基数指进位计数制中所使用的数字符号的个数):

  • 二进制:基数为 2,只使用 0 和 1 两个数字,逢 2 进 1(计算机底层存储的基础)
  • 八进制:基数为 8,使用 0-7 八个数字,逢 8 进 1
  • 十六进制:基数为 16,使用 0-9 和 A-F(或 a-f)十六个符号,逢 16 进 1(A=10, B=11, …, F=15)
  • 十进制:基数为 10,使用 0-9 十个数字,逢 10 进 1(人类日常使用的计数方式)

为什么需要多种进制?
  • 二进制是计算机的底层语言,计算机只有高低两种电平,只能识别 0 和 1。但纯二进制数字极长,读写、复制极易出错。
  • 八进制和十六进制是二进制的简化表示形式,能大幅缩短数字长度,每 3 位二进制对应 1 位八进制,每 4 位二进制对应 1 位十六进制,转换非常方便。
  • 进制互转无计算损耗,分组即可快速换算,大幅缩短数字长度,方便程序员阅读调试。


二、二进制与十进制的相互转换

1. 十进制转二进制

二进制的概念及十进制转二进制

2. 二进制转十进制

二进制转十进制采用按权展开求和法,即每一位数字乘以 2 的对应次方(次方从右往左,从 0 开始计数),然后将所有结果相加。

示例 1:将二进制0011转换为十进制

计算过程: 0011 (2) = 1×2⁰+1×2¹ +0×2² +0×2³ = 1×1 + 1×2 + 0 + 0 = 3(10)




三、八进制与其他进制的转换

八进制是二进制的简化形式,每 3 位二进制数对应 1 位八进制数,这使得它们之间的转换非常高效。

1. 二进制与八进制的转换

①二进制转八进制

转换步骤:

  • 将二进制数从右往左每 3 位分为一组(不足 3 位的在左边补 0)
  • 每组 3 位二进制数对应 1 位八进制数(000-111 对应 0-7)
  • 组合所有结果得到八进制数

示例:将二进制10110101转换为八进制:

分组(从右往左):10 110 101 → 补0后为 010 110 101 对应关系: 010 → 2 110 → 6 101 → 5 组合结果:265(8) 即:10110101(2) = 265(8)

②八进制转二进制

转换步骤:

  • 将八进制的每一位数字转换为对应的 3 位二进制数
  • 去除前导零(可选,根据需要保留)
  • 组合所有二进制数得到结果

示例:将八进制141转换为二进制

计算过程: 对应关系: 1(8) = 001(2) 4(8) = 100(2) 1(8) = 001(2) 组合结果:001100001(2) → 简化为1100001(2)

2. 八进制与十进制的转换

①八进制转十进制

采用按权展开法,每一位数字乘以 8 的对应次方(次方从右往左,从 0 开始计数),然后求和。

示例:将八进制141转换为十进制

计算过程: 141(8) = 1×8⁰ + 4×8¹ + 1×8² = 1×1 + 4×8 + 1×64 = 1 + 32 + 64 = 97(10)

②十进制转八进制

采用除 8 取余法,不断用 8 整除该数,记录每次的余数,直到商为 0,最后将余数从后往前排列。

示例:将十进制97转换为八进制

计算过程: 97 ÷ 8 = 12 余数 1 12 ÷ 8 = 1 余数 4 1 ÷ 8 = 0 余数 1 余数倒序排列:141 结果:97(10) = 141(8)


四、十六进制与其他进制的转换

十六进制是最常用的二进制简化形式,每 4 位二进制数对应 1 位十六进制数,广泛应用于编程领域。

1. 二进制与十六进制的转换

①二进制转十六进制

转换步骤:

  • 将二进制数从右往左每 4 位分为一组(不足 4 位的在左边补 0)
  • 每组 4 位二进制数对应 1 位十六进制数(0000-1111 对应 0-F)
  • 组合所有结果得到十六进制数

示例 :将二进制01100001转换为十六进制

分组(从右往左):0110 0001 对应关系: 0110(2) = 6(16) 0001(2) = 1(16) 组合结果:61(16)

②十六进制转二进制

转换步骤:

  • List item将十六进制的每一位数字转换为对应的 4 位二进制数
  • 去除前导零(可选,根据需要保留)
  • 组合所有二进制数得到结果

示例:将十六进制61转换为二进制

对应关系: 6(16) = 0110(2) 1(16) = 0001(2) 组合结果:01100001(2) → 简化为1100001(2)

2. 十六进制与十进制的转换

①十六进制转十进制

采用按权展开法,每一位数字乘以 16 的对应次方(次方从右往左,从 0 开始计数),然后求和。

示例 1:将十六进制 61 转换为十进制

计算过程: 61(16) = 1×16⁰ + 6×16¹ = 97(10)

示例 2:将十六进制FA转换为十进制

plaintext 计算过程: FA(16) = 10×16⁰ + 15×16¹ (F=15, A=10) = 250(10)

②十进制转十六进制

采用除 16 取余法,不断用 16 整除该数,记录每次的余数(10-15 分别用 A-F 表示),直到商为 0,最后将余数从后往前排列。

示例:将十进制250转换为十六进制

计算过程: 250 ÷ 16 = 15 余数 10 → A 15 ÷ 16 = 0 余数 15 → F 余数倒序排列:FA 结果:250(10) = FA(16)


五、Java 中进制的表示与转换

Java 程序支持直接使用二进制、八进制和十六进制表示整数,并能自动转换为十进制输出。

1. 不同进制的表示方法

在 Java 中,不同进制的数字有特定的前缀标识

  • 二进制:以0b或0B开头
  • 八进制:以0开头
  • 十六进制:以0x或0X开头

代码示例:

publicclassVariableDemo1{publicstaticvoidmain(String[]args){printVariable();}publicstaticvoidprintVariable(){//程序中可以直接写进制数据System.out.println("--------二进制转为十进制--------");inti1=0b01100001;//二进制 97System.out.println(i1);System.out.println("--------八进制转为十进制--------");inti2=0141;//八进制 97System.out.println(i1);System.out.println("--------十六进制转为十进制--------");;inti3=0x61;//十六进制 97inti4=0xFA;//十六进制 250System.out.println(i3);System.out.println(i4);}}

2. 进制转换的 API 方法

Java 提供了内置方法用于进制转换:

publicclassNumberConversion{publicstaticvoidmain(String[]args){intnum=97;// 十进制转其他进制System.out.println("十进制"+num+"转二进制: "+Integer.toBinaryString(num));// 1100001System.out.println("十进制"+num+"转八进制: "+Integer.toOctalString(num));// 141System.out.println("十进制"+num+"转十六进制: "+Integer.toHexString(num));// 61// 其他进制转十进制intfromBinary=Integer.parseInt("1100001",2);// 二进制转十进制intfromOctal=Integer.parseInt("141",8);// 八进制转十进制intfromHex=Integer.parseInt("61",16);// 十六进制转十进制System.out.println("二进制1100001转十进制: "+fromBinary);// 97System.out.println("八进制141转十进制: "+fromOctal);// 97System.out.println("十六进制61转十进制: "+fromHex);// 97}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/5 8:39:53

S7-1200外部中断实战:创建、分离与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/5 8:38:51

基于ADS122U04与TM4C1299的工业温度采集系统设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/5 8:36:15

5G NR-PRS在6G ISAC混合场景定位中的应用与优化

1. 项目概述与背景 在6G通信系统的演进过程中,集成感知与通信(ISAC)技术正成为关键研究方向。5G新空口定位参考信号(NR-PRS)作为现有5G网络中的成熟定位方案,其技术优势为6G多基地ISAC系统提供了重要支撑。…

作者头像 李华
网站建设 2026/11/5 8:36:13

金融系统开发核心:账户建模、支付状态机与资金安全实践

在金融行业做软件,和做普通互联网产品有一个非常大的区别:普通产品出错还能回滚,金融产品出错往往伴随的是真金白银的损失和信任崩塌。这些年我参与过不少financial-services项目——支付网关、财富管理平台、信贷系统……每一次需求评审会之…

作者头像 李华
网站建设 2026/11/5 8:35:41

OpenClaw分布式通信架构设计与性能优化解析

1. 项目背景与核心价值OpenClaw这个项目最近在GitHub上引起了不小的轰动。作为一个长期关注分布式系统架构的开发者,我第一时间clone了它的代码仓库。说实话,能在全球开源项目中登顶榜首,这个项目肯定有其过人之处。从项目名称"OpenClaw…

作者头像 李华