Java基础之进制转换

news2024/9/20 10:46:25

1 进制基础

概念

​ 进制就是进位制,是人们规定的一种进位方法,二进制逢2进1,八进制是逢8进1,十进制逢10进1,十六进制逢16进1。

不同进制形式:

  • 二进制 0b或0B开头,由0和1组成

  • 八进制 0开头,由0、1…6、7组成

  • 十进制 常见整数,由0、1…8、9组成

  • 十六进制 0x或0X开头,由0、1…8、9、a、b、c、d、e、f组成,大小写不区分

案例描述:

package com.briup.chap02;

public class Test063_Binary {
	public static void main(String[] args) {
		byte b1 = 0b01100001;	//二进制
		byte b2 = 97;			//十进制
		byte b3 = 0141;			//八进制
		byte b4 = 0x61;			//十六进制

		//打印出来结果全是97,为什么?
		System.out.println(b1);
		System.out.println(b2);
		System.out.println(b3);
		System.out.println(b4);
	}
}

注意:不论什么类型的数据值,在计算机的底层存储时,统一按照二进制形式存储!

上述案例中,0b01100001、97、0141、0x61在计算机底层存储时,都是按二进制存储的,其值按照十进制表示,都是97。

思考:如何将2进制、8进制、10进制、16进制数进行转换呢?

2 进制转换

1)任意进制转换为10进制

转换方式:

结果值 = 系数*基数的权次幂相加

​ 系数:每一位上的数据

​ 基数:X进制,基数就是X

​ 权:最右边那位对应0,每左移一位加1

案例展示

// 97:系数为9和7,基数为10,权是0和1
97: 7*10^0 + 9*10^1 = 7 + 90 = 97
    
0b01100001: 1*2^0 + 0*2^1 + 0*2^2 + 0*2^3 + 0*2^4 + 1*2^5 + 1*2^6 
    = 1 + 32 + 64 = 97

01411*8^0 + 4*8^1 + 1*8^2 = 1 + 32 + 64 = 97 

// 0x61:系数为6和1,基数为16,权是0和1
0x611*16^0 + 6*16^1 = 1 + 96 = 97

变量内存理解

在这里插入图片描述

2)十进制转换为其他进制

除积倒取余,具体计算过程如下:

在这里插入图片描述

16进制也是一样的换算方式。

3)十进制到二进制的快速转换

对于不太大的正整数,我们可以采用一种快捷的方式(8421码)来获取其2进制形式,如下图:

在这里插入图片描述
在这里插入图片描述

上图运算步骤解析

  • 拆解正整数,将其分解为2的指数倍相加
  • 找出2的指数倍 对应的 二进制1
  • 根据变量类型确定占用的字节数及比特位,组合得到最终的二进制形式

4)二进制转换为8、16进制

2进制转化为8进制

  • 从最低位开始,每3位分一组,不足3位的话高位补0

  • 将得到的数字组合到一起,最前面以0开头

案例展示:

//定义变量
byte b = 126;

//获取其二进制形式
// 126 = 127 - 1 或 64 + 32 + 16 + 8 + 4 + 2
// 	0b 0111 1110 
//2进制 -> 8进制   
//a.从最低位开始,每3位分一组,不足3位则高位补0
//	001 111 110
//	 1   7   6
//b.最后组合到一起,最前面以0开头
//结果:0176
byte b2 = 0176;
System.out.println(b == b2);

2进制转换为16进制

  • 从最低位开始,每4位分一组,不足4位的话高位补0

  • 将得到的数字组合到一起,最前面以0x开头

案例展示:

//定义变量
byte b = 126;

//二进制形式:0b 0111 1110 
//2进制 -> 16进制   
//a.从最低位开始,每4位分一组,不足4位则高位补0
//	0000 0111 1110
//	  0    7   e(14)		其中a:10 b:11 c:12 d:13 e:14 f:15
//b.最后组合到一起,最前面以0x开头
//结果:0x07e
byte b2 = 0x07e;
System.out.println(b == b2);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2042861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爬虫配置代理:保护隐私有效地抓取数据

爬虫配置代理的详细指南 在进行网络爬虫时,使用代理可以帮助我们更有效地抓取数据,避免IP被封禁,并提高隐私保护。本文将详细介绍如何在爬虫中配置代理,包括不同的代理类型、如何选择合适的代理以及在Python中实现代理的具体步骤…

中国软件评测中心:2024年最新人工智能大语言模型技术发展研究报告 (附文档)

人工智能作为引领新一轮科技产业革命的战略性技术和新质生产力重要驱动力,正在引发经济、社会、文化等领域的变革和重塑,2023 年以来,以 ChatGPT、GPT-4 为代表的大模型技术的出台,因其强大的内容生成及多轮对话能力,引…

python-A+B again

[题目描述] 小理有一个非常简单的问题给你,给你两个整数 A 和 B,你的任务是计算 AB。输入格式: 输入共 2∗T1 行。 输入的第一行包含一个整数 T 表示测试实例的个数,然后 2∗T 行,分别表示 A 和 B 两个正整数。注意整数…

调研在深度学习中如何读代码

这里调研了四个up主的内容,对他们讲的内容摘了一下主要的内容。想要看原文的画可以看原篇。 1.如何学习别人的代码(代码量较大时)_怎么学习别人的代码-CSDN博客 想要掌握的好,光阅读是不够的,一定要动手写、训练模型…

k8s 部署RuoYi-Vue-Plus之minio搭建

1.直接部署一个pod 需要挂载存储款, 可参考 之前文章设置 https://blog.csdn.net/weimeibuqieryu/article/details/140183843 2.部署yaml 创建部署文件 minio-deploy.yaml apiVersion: v1 kind: PersistentVolume metadata:name: minio-pvnamespace: ruoyi #使用ns ruoyi s…

MyCAT读写分离实现

1. 添加一个新的虚拟主机,设置ip为10.1.1.60,主机名为 mycat.yuanyu.zhangmin.关闭防火墙 SELinux NetworkManager 2. 上传jdk和mycat安装包 3. 解压并且添加到指定的位置 4. 查看并且配置jdk环境 、5. 测试启动myca就可以了 6. 找到server.xml和schema.xml 7. 配…

Python酷库之旅-第三方库Pandas(081)

目录 一、用法精讲 336、pandas.Series.str.rpartition方法 336-1、语法 336-2、参数 336-3、功能 336-4、返回值 336-5、说明 336-6、用法 336-6-1、数据准备 336-6-2、代码示例 336-6-3、结果输出 337、pandas.Series.str.slice方法 337-1、语法 337-2、参数 …

RCE---eval长度限制绕过技巧

目录 题目源码 方法一&#xff1a;命令执行的利用 方法二&#xff1a;file_put_contents&#xff08;本地文件包含的利用&#xff09; 方法三&#xff1a;usort(…$_GET); 题目源码 <?php $param $_REQUEST[param]; if(strlen($param)<17 && stripos($par…

【题解】【一题多解】—— [NOIP1998 普及组] 三连击

【题解】—— [NOIP1998 普及组] 三连击 [NOIP1998 普及组] 三连击题目背景题目描述输入格式输出格式输入输出样例输入 #1输出 #1 提示 解法1.直接提交答案解法2.普通枚举2.1.题意分析2.2.AC代码 解法3.全排列枚举3.1.题意分析3.2.AC代码 解法4.深度优先搜索4.1.题意分析4.2.AC…

宝塔面板屏蔽 Censys,防止源站 IP 泄露

Censys 搜索引擎很强大。Censys 每天都会扫描 IPv4 地址空间&#xff0c;以搜索所有联网设备并收集相关的信息&#xff0c;并返回一份有关资源&#xff08;如设备、网站和证书&#xff09;配置和部署信息的总体报告。 在 IP 前加上 https 访问时&#xff0c;Nginx 会自动返回该…

嵌入式学习 20(Linux高级编程——文件——misc)

文件操作相关函数 一、symlink 函数 int symlink(const char *oldpath, const char *newpath); 功能&#xff1a; 创建一个指向 oldpath 文件的新的符号链接&#xff08;软链接&#xff09;文件。 参数&#xff1a; • oldpath&#xff1a;被链接指向的原始文件的路径。 • …

spring事务失效问题可以这样解决

今天咱们就来聊聊在Spring事务管理中你可能踩过的坑&#xff0c;并教你如何规避这些陷阱。 事务提交的陷阱 有时&#xff0c;事务方法在抛出异常后没有回滚&#xff0c;而是被提交了。 这通常是由于异常被捕获但没有显式抛出&#xff0c;导致Spring误以为事务正常完成。 错…

Review Learning : 推进一体化超高清图像恢复训练方法

Review Learning: Advancing All-in-One Ultra-High-Definition Image Restoration Training Method 摘要 一体化图像恢复任务变得越来越重要&#xff0c;特别是对于超高清&#xff08;UHD&#xff09;图像。 现有的一体机UHD图像恢复方法通常通过引入针对不同退化类型的即时…

小区团购管理

TOC springboot254小区团购管理 第1章 绪论 1.1选题动因 当前的网络技术&#xff0c;软件技术等都具备成熟的理论基础&#xff0c;市场上也出现各种技术开发的软件&#xff0c;这些软件都被用于各个领域&#xff0c;包括生活和工作的领域。随着电脑和笔记本的广泛运用&…

一文搞懂后端面试之数据库综合应用【中间件 | 数据库 | MySQL | 高可用 | 高性能】

查询缓存 在MySQL里面&#xff0c;允许用户开启查询缓存。你可以理解这个缓存就是用SQL作为键&#xff0c;而对应的查询结果集就是值。如果下次过来的还是同一个查询&#xff0c;那么就直接返回缓存起来的查询结果集。 但是查询缓存不一定带来查询性能提升。如果你的查询每一…

接口隔离原则

接口隔离原则 接口隔离原则就是客户端不应该依赖它不需要的接口&#xff0c;或者说类间的依赖关系应该建立在最小的接口上。 我们以搜索美女为例&#xff0c;设计了如下的类图&#xff1a; 源代码如下。美女及其实现类&#xff1a; 搜索程序及其子类源代码如下&#xff1a; 最…

0101中文乱码-BufferedImage-图片处理

文章目录 1、问题描述2 、电子证书生成3、中文乱码原因及修复4、思考 结语 1、问题描述 接手维护一个休闲赛事类项目&#xff0c;因为服务器到期&#xff0c;项目从云服务器迁移到本地服务器。 项目生成比赛&#xff0c;分为二人组、三人组等等的团体&#xff1b;比赛设置几个…

判断矩阵中的一致性检验是指什么

判断矩阵中的一致性检验通常指的是在层次分析法&#xff08;Analytic Hierarchy Process, AHP&#xff09;中&#xff0c;用于评估决策者在构造判断矩阵时的逻辑一致性。 在AHP中&#xff0c;决策者需要比较成对的因素&#xff0c;并为每对因素的相对重要性赋予一个数值&#…

什么是haproxy七层代理

一.负载均衡 1.1.什么是负载均衡 负载均衡&#xff1a;Load Balance&#xff0c;简称LB&#xff0c;是一种服务或基于硬件设备等实现的高可用反向代理技术&#xff0c;负载均 衡将特定的业务(web服务、网络流量等)分担给指定的一个或多个后端特定的服务器或设备&#xff0c;从…

DriftingBlues2靶机渗透测试

DriftingBlues2靶机 文章目录 DriftingBlues2靶机信息收集FTP渗透web渗透权限提升靶机总结 信息收集 nmap扫描得到21,22和80端口&#xff0c;其中21ftp协议可以使用匿名用户登录 使用目录扫描一下网站&#xff0c;得到了blog目录 FTP渗透 匿名用户登录进去&#xff0c;发现…