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

article/2025/9/24 0:30:51

目录

  • 前言
  • 十进制转二进制
    • 正整数转二进制
    • 小数转换成二进制
    • 代码实现
  • 二进制转十进制
    • 代码实现
  • BigInteger
    • 概念
    • 运用

前言

Java有哪些工具类可以实现十进制与二进制之前的转换呢?欲知详情,请看下文分解。

十进制转二进制

正整数转二进制

除2取余,逆序排列,高位补零。

示例:

十进制255 = 二进制1111 1111

计算过程:

255/2=127=====1
127/2=63======1
63/2=31=======1
31/2=15=======1
15/2=7========1
7/2=3=========1
3/2=1=========1
1/2=0=========1

小数转换成二进制

乘2取整,顺序排列。

十进制0.625 = 二进制0.101

计算过程:

0.625*2=1.25======取出整数部分1
0.25*2=0.5========取出整数部分0
0.5*2=1==========取出整数部分1

代码实现

Java类实现:

System.out.println(new BigInteger("255", 10).toString(2));

自定义实现:

public static void main(String[] args) {System.out.print("输入一个十进制数:");Scanner s = new Scanner(System.in);int num = s.nextInt();String result = "";for (int i = num; i > 0; i /= 2) {result = i % 2 + result;}System.out.println(result);
}

二进制转十进制

小数点前或者整数要从右到左用二进制的每个数去乘以2的相应次方并递增,小数点后则是从左往右乘以二的相应负次方并递减。

示例:
二进制数1101.01转化成十进制

计算过程:

1101.012=1*20+0*21+1*22+1*23 +0*2-1+1*2-2=1+0+4+8+0+0.25=13.2510

代码实现

Java类实现:

Integer.parseInt("1111",2);

自定义实现:

public static void main(String[] args) {System.out.print("输入一个二进制数:");Scanner scanner = new Scanner(System.in);int binaryNumber = scanner.nextInt();int decimal = 0;int p = 0;while (true) {if (binaryNumber == 0) {break;} else {int temp = binaryNumber % 10;decimal += temp * Math.pow(2, p);binaryNumber = binaryNumber / 10;p++;}}System.out.println(decimal);
}

BigInteger

概念

在Java中,由CPU原生提供的整型最大范围是64位long型整数。使用long型整数可以直接通过CPU指令进行计算,速度非常快。
如果我们使用的整数范围超过了long型怎么办?

这里就引入我们要了解的主角BigInteger。

java.math.BigInteger就是用来表示任意大小的整数。BigInteger内部用一个int[]数组来模拟一个非常大的整数:

运用

如果不借助BigInteger类,当你需要运算9999999999999999的6次方,你敢想吗?或者还又哪些办法

BigInteger bi = new BigInteger("9999999999999999");
System.out.println(bi.pow(6));

结果:

999999999999999400000000000000149999999999999980000000000000001499999999999999940000000000000001

如果在疯狂点?结果是多少?

BigInteger bi = new BigInteger("999999999999999999");
System.out.println(bi.pow(999999999));

BigInteger和Integer、Long一样,也是不可变类,并且也继承自Number类。因为Number定义了转换为基本类型的几个方法:

转换为bytebyteValue()
转换为shortshortValue()
转换为intintValue()
转换为longlongValue()
转换为floatfloatValue()
转换为doubledoubleValue()

通过上述方法,可以把BigInteger转换成基本类型。如果BigInteger表示的范围超过了基本类型的范围,转换时将丢失高位信息,即结果不一定是准确的。如果需要准确地转换成基本类型,可以使用intValueExact()、longValueExact()等方法,在转换时如果超出范围,将直接抛出ArithmeticException异常。

在这里插入图片描述

点赞 收藏 关注
吾人只有进德与修业,这二事靠得住


http://chatgpt.dhexx.cn/article/CBIqQgZ4.shtml

相关文章

Java 中的进制转换

前言 所谓进制转换,就是人们利用符号来计数的方法。进制转换由一组数码符号和两个基本因素“基数”和“位权”所构成。其中基数是指进位计数制中所采用的数码的个数,逢 n 进 1 中的 n 就是基数。而位权则指的是进位制中每一个固定位置所对应的单位制&am…

Java十进制转换为二进制

Java十进制到二进制转换的3种不同方法。 1. Integer.toString()方法 我们可以使用Integer类的toString()方法将十进制数转换为二进制数。此方法有两个参数,第一个参数是十进制数,第二个参数是我们要转换的基…

Java 菜鸟入门 | 常用进制转换

前言 所谓进制转换,就是人们利用符号来计数的方法。进制转换由一组数码符号和两个基本因素“基数”和“位权”所构成。其中基数是指进位计数制中所采用的数码的个数,逢 n 进 1 中的 n 就是基数。而位权则指的是进位制中每一个固定位置所对应的单位制&am…

Java进制转换(二进制、八进制、十进制、十六进制)

在Java编程中,经常需要进行不同进制之间的转换,包括二进制、八进制、十进制和十六进制。本篇博文将详细介绍如何在Java中实现这些进制之间的转换。 目录 一、十进制与其他进制转换1. 十进制转二进制2. 十进制转八进制3. 十进制转十六进制 二、其他进制与…

java进制转换方法

一、十进制向二、八、十六进制的转换 方法一: Integer.toBinaryString(i)表示十进制转为二进制 Integer.toOctalString(i)表示十进制转为八进制 Integer.toHexString(i)表示十进制转为十六进制 public static void main(String[] args) {String num1 Integer.toBi…

Quartz定时任务框架(一):概述和Job、JobDetail详解

文章目录 Quartz定时任务框架核心概念Hello World 入门 深入学习原理概述Job和JobDetailJobDataMapJob实例Job的数据状态和并发Job的其它特性 Quartz定时任务框架 核心概念 JobJobDetailTriggerScheduler Job: 既然是定时任务,任务任务对吧,job就是你…

struts2+quartz定时任务

最近有需求要写一个定时任务 目的是更新一些员工/人员与部门之间的关系 项目用的是struts2 当我加了spring的jar包之后写了一个定时任务 项目经理不让用spring 就修改一下 这次贴个全的 下面是任务类 package com.timetask.action; import java.io.BufferedWriter; import…

Quartz定时任务框架使用教程详解

Quartz定时任务框架学习 什么是QuartzQuartz依赖引入使用 QuartzQuartz API,Jobs和TriggersJob 和 Trigger为什么既有 Job,又有 Trigger 呢?Key Job与JobDetail介绍为什么设计成JobDetail Job,不直接使用JobJobDataMapJob实例Job…

quartz定时任务不执行

quartz定时任务执行一段时间不执行的原因 数据库表QRTZ_TRIGGERS 里的TRIGGER_STATE 字段的值自动修改为ERROR了 ,quartz定时任务是不扫描这种ERROR情况. 之所以出现ERROR 原因在于job里有bug,导致quartz自动将状态改变,然后quartz不执行ERROR状态的job. 1.查找原因 原因如下图…

SpringBoot结合Quartz实现定时任务

《从零打造项目》系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建SpringBoot集成Mybatis项目实操SpringBoot集成MybatisPlus项目实操SpringBoot集成Spring Data JPA项目实操 数据库变更管理 数据库变更管理:Liquibase…

Quartz定时任务不定时执行

请移步: https://editor.csdn.net/md/?articleId126933515 手动执行才执行。 cron表达式是 1分钟执行3次,一直正常的。 cron "0 */20 * * * ?"依次报错: 后定时任务不再执行了。 手动触发可以正常执行。 Job taskJob (Job…

Springboot 使用quartz 定时任务 增删改查

前段时间公司项目用到了 定时任务 所以写了一篇定时任务的文章 ,浏览量还不错 , Springboot 整合定时任务 ) 所以就准备写第二篇, 如果你是一名Java工程师,你也可以会看到如下的页面 ,去添加定时任务 定时任务展示 :…

JAVA - Quartz 定时任务_启动原理

JAVA - Quartz 定时任务_启动原理 前言 在开发过程中,我们会用定时任务来执行一些操作,例如定时去捞取流水重试业务、定时去消息中间件获取消息等等相关需求 简单的定时任务实现可以借助Spring提供的 Scheduled 注解 详细看 Spring 原理之 Scheduled …

如何应用quartz定时任务?

Quartz可以用来做什么? Quartz是一个强大任务调度框架,我工作时候会在这些情况下使用到quartz框架,当然还有很多的应用场景,在这里只列举2个实际用到的 餐厅系统会在每周四晚上的22点自动审核并生成报表人事系统会在每天早晨8点…

Quartz定时任务基础学习

Quartz基础笔记 前言 1、什么是Quartz Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目。 2、Quartz的运行环境是什么? Quartz可以运行嵌入在一个独立式应用程序Quartz可以在应用服务器或者Servlet容器实例化,并且参与事务Quartz可…

Quartz定时任务

Java实现定时任务的方式 一、线程等待(不建议使用,任务复杂时存在内存泄露风险) Thread myThread new Thread(new Runnable() {Overridepublic void run() {while (true) {System.out.println("TestThreadWait is called!");try…

java定时任务Quartz整理

目录 一、Quartz介绍 二、Quartz的组成 三、使用java实现一个简单的Quartz例子 四、使用Springboot整合Quartz定时任务框架 五、使用Springbootmybatis整合Quartz定时任务框架实现定时向数据库插入一条数据 六、总结 七、参考资料 一、Quartz介绍 quartz是一种基于java…

Quartz之定时任务

一 基础概念 1.什么是Quartz? Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于 java.util.Timer。但是相较于Timer, Quartz增加了很多功能:(1).持久性…

定时任务框架Quartz

目录 一、Quartzh介绍 1、Quartz的定义: 2、Quartz完成定时任务的原理: 二、cron表达式 1、cron表达式定义 2、cron表达式规范 三、spring自带调度器 四、Quartz内存版集成基本使用 1、关于Quartz内存版集成的步骤 1、先到启动类中写好集成的步骤 2、…

定时任务:Quartz 详解

定时任务:Quartz 详解 文章目录 定时任务:Quartz 详解1 Quartz是什么?2 Quartz核心组成3 Quartz核心模块理解3.1 用工厂模式理解 Quartz 的设计机制:3.2 用流程图理解 Quartz 的核心模块关系: 4 Quartz详解4.1 Quartz的…