当前位置: 首页 > news >正文

Java 实现二进制与十进制之间的互相转换

在编程中,数制转换是一个非常常见的需求。Java 作为一种高级语言,提供了便捷的方法来实现 二进制(Binary)十进制(Decimal) 之间的转换。本文将介绍 Java 中二进制与十进制互转的原理与实现方式,并附上完整代码示例。


一、十进制转二进制

1.1 原理

十进制转二进制的方法通常有两种:

  • 手动除以 2 取余法:不断将十进制数除以 2,将余数倒序排列。
  • 使用 Java 提供的封装方法Integer.toBinaryString(int i)

1.2 示例代码

public class DecimalToBinary {public static void main(String[] args) {int decimal = 42;String binary = Integer.toBinaryString(decimal);System.out.println("十进制 " + decimal + " 转换为二进制为: " + binary);}
}

输出:

十进制 42 转换为二进制为: 101010

二、二进制转十进制

2.1 原理

  • 将二进制字符串按照权展开(即 $2^n$)求和。
  • Java 中可以使用 Integer.parseInt(String s, int radix) 方法进行转换。

2.2 示例代码

public class BinaryToDecimal {public static void main(String[] args) {String binary = "101010";int decimal = Integer.parseInt(binary, 2);System.out.println("二进制 " + binary + " 转换为十进制为: " + decimal);}
}

输出:

二进制 101010 转换为十进制为: 42

三、完整示例:交互式转换器

import java.util.Scanner;public class BinaryDecimalConverter {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请选择操作:");System.out.println("1. 十进制转二进制");System.out.println("2. 二进制转十进制");int choice = scanner.nextInt();if (choice == 1) {System.out.print("请输入十进制数字: ");int decimal = scanner.nextInt();String binary = Integer.toBinaryString(decimal);System.out.println("转换后的二进制为: " + binary);} else if (choice == 2) {System.out.print("请输入二进制数字: ");String binary = scanner.next();try {int decimal = Integer.parseInt(binary, 2);System.out.println("转换后的十进制为: " + decimal);} catch (NumberFormatException e) {System.out.println("输入的不是有效的二进制数字!");}} else {System.out.println("无效的选择!");}scanner.close();}
}

四、总结

类型Java 方法示例
十进制转二进制Integer.toBinaryString(int)Integer.toBinaryString(42)101010
二进制转十进制Integer.parseInt(str, 2)Integer.parseInt("101010", 2)42

Java 提供的这些工具方法极大地简化了进制转换操作。在实际开发中,你也可以扩展思路处理其他进制之间的转换,比如八进制、十六进制等。


如需进一步扩展为支持其他进制(例如十六进制转二进制等),也可以继续使用 Integer.toString(int num, int radix)Integer.parseInt(String str, int radix) 进行灵活转换。

http://www.xdnf.cn/news/572419.html

相关文章:

  • 校平机的原理、应用及发展趋势
  • Vue3学习(Vue3.3新特性——defineModel宏详解)
  • OpenCv高阶(十六)——Fisherface人脸识别
  • MySQL 索引的增删改查
  • Docusaurus Umami
  • 算法优选系列(9.BFS 解决拓扑排序)
  • GStreamer (四)交叉编译
  • 华为eNSP无线AC/AP组网实战
  • 基于大模型的闭合性尺桡骨干骨折全方位诊疗研究报告
  • 现代计算机图形学Games101入门笔记(二十)
  • V少JS基础班之第五弹
  • ElasticSearch导读
  • 【网络安全】日志采集、监控任务守护进程详细教程(附实战案例)
  • 打卡31天
  • Python学习Day1:安装
  • 谷歌2025年I/O开发者大会热点总结
  • shell脚本总结3
  • 【LLMs篇】12:Qwen3 技术报告翻译
  • 人工智能路径:技术演进下的职业发展导航
  • 20个关于Java编程语言的常见问题
  • 从微积分到集合论(1630-1910)(历史简介)——第2章——牛顿(Newton)和莱布尼兹(Neibniz)以及莱布尼兹传统(H.J.M.Bos)
  • 2025年人工智能新应用与新技术全景解析
  • Qt+线段拖曳示例代码
  • 【UE5】环形菜单教程
  • 现代计算机图形学Games101入门笔记(十九)
  • 汽车电子电气架构诊断功能开发全流程解析
  • Linux nbd 网络块设备(2)-内核实现
  • fork 和 写时拷贝
  • NV009NV010美光闪存颗粒NV011NV012
  • 【Elasticsearch】字段别名