Java——常见进制

在计算机领域有四种比较常见的进制,分别是二进制、八进制、十进制和十六进制。

一、二进制(Binary)

二进制(Binary)是一种基数为2的数值系统,仅使用两个符号:0和1。所以它的进位规则就是逢二进一。

就如使用二进制从一数到五就是:

1,10,11,100,101

从 Java 7 开始,Java 支持使用二进制字面量来表示整数。这使得代码在涉及低级位操作和硬件编程时更具可读性。二进制字面量以 0b0B 开头,后跟实际的二进制数字(0和1)。下面是一些使用二进制字面量的示例:

public class Test {
	public static void main(String[] args) {
		// 使用二进制字面量初始化整数
        int num1 = 0b101; // 二进制中的 101 是十进制的 5
        int num2 = 0b1101; // 二进制中的 1101 是十进制的 13
        int num3 = 0B100000; // 二进制中的 100000 是十进制的 32
        
        // 打印结果
        System.out.println("num1 = " + num1); // 输出: num1 = 5
        System.out.println("num2 = " + num2); // 输出: num2 = 13
        System.out.println("num3 = " + num3); // 输出: num3 = 32
	}
}

运行结果:

二、八进制(Octal)

八进制数值系统的基数是8,因此它使用的字符为0到7。它的进位规则就是逢八进一。

对于八进制从一数到十就是:

1,2,3,4,5,6,7,10,11,12

在Java中,八进制常量以 0 作为前缀,后跟实际的八进制数字。下面是一些使用八进制字面量的示例:

public class Test {
	public static void main(String[] args) {
		// 使用八进制字面量初始化整数
        int num1 = 0123; // 八进制中的 123 是十进制的 83
        int num2 = 077;  // 八进制中的 77 是十进制的 63
        int num3 = 05;   // 八进制中的 5 是十进制的 5

        // 打印结果
        System.out.println("num1 = " + num1); // 输出: num1 = 83
        System.out.println("num2 = " + num2); // 输出: num2 = 63
        System.out.println("num3 = " + num3); // 输出: num3 = 5
	}
}

运行结果:

三、十进制(Decimal)

十进制使我们在生活中常用的进制,它使用 0 到 9 这十个基数标识。进位规则就是逢十进一。对于 System.out.println(); 打印出来的数值一般就是十进制,方便人类查看。

在 Java 中,我们经常使用十进制常量,十进制常量没有特殊前缀。下面是一些使用十进制进制字面量的示例:

public class Test {
	public static void main(String[] args) {
		// 使用八进制字面量初始化整数
        int num1 = 223; // 十进制的 223
        int num2 = 93;  // 十进制的 93
        int num3 = 56;   // 十进制的 56

        // 打印结果
        System.out.println("num1 = " + num1); // 输出: num1 = 223
        System.out.println("num2 = " + num2); // 输出: num2 = 93
        System.out.println("num3 = " + num3); // 输出: num3 = 56
	}
}

运行结果:

四、十六进制(Hexadecimal)

十六进制使用16个符号来表示数值,即0-9和A-F,其中A代表10,B代表11,C代表12,D代表13,E代表14,F代表15。

在Java中,十六进制常量以 0x0X 作为前缀,后跟具体的十六进制数值。下面是一些使用十六进制字面量的示例:

public class Test {
	public static void main(String[] args) {
		// 使用十六进制字面量初始化整数
        int num1 = 0x1A3F; // 十六进制中的 1A3F 是十进制的 6719
        int num2 = 0xFF;   // 十六进制中的 FF 是十进制的 255
        int num3 = 0x7E;   // 十六进制中的 7E 是十进制的 126

        // 打印结果
        System.out.println("num1 = " + num1); // 输出: num1 = 6719
        System.out.println("num2 = " + num2); // 输出: num2 = 255
        System.out.println("num3 = " + num3); // 输出: num3 = 126
	}
}

运行结果:

五、常见进制间相互转化

1、二进制转十进制

将二进制数转换为十进制数的方法是将每一位上的数乘以对应的2的幂,然后求和。

转换步骤:

  1. 从右到左,给二进制数的每一位赋予指数值,起始值为0。
  2. 将每一位上的数字乘以2的幂次。
  3. 把所有的乘积相加,得到十进制结果。

例如:

也就是说先将每一位的值乘上 2 的每一位的位数减一次方,然后将结果相加起来,就是最终转换的十进制结果。

2、八进制转十进制

将八进制数转换为十进制数的方法是将每一位上的数乘以对应的8的幂,然后求和。

转换步骤:

  1. 从右到左,给八进制数的每一位赋予指数值,起始值为0。
  2. 将每一位上的数字乘以8的幂次。
  3. 把所有的乘积相加,得到十进制结果。

示例:

也就是说先将每一位的值乘上 8 的每一位的位数减一次方,然后将结果相加起来,就是最终转换的十进制结果。

3、十六进制转十进制

将十六进制数转换为十进制数的方法是将每一位上的数乘以对应的16的幂,然后求和。

转换步骤:

  1. 从右到左,给十六进制数的每一位赋予指数值,起始值为0。
  2. 将每一位上的数字乘以16的幂次。
  3. 把所有的乘积相加,得到十进制结果。

示例:

也就是说先将每一位的值乘上 16 的每一位的位数减一次方,然后将结果相加起来,就是最终转换的十进制结果。

4、十进制转二进制

将十进制数转换为二进制数的方法是通过不断除以2,并记录每次除法的余数,直到商为0。然后将余数逆序排列。

转换步骤:

  1. 将十进制数除以2,记录余数。
  2. 用商继续除以2,继续记录余数。
  3. 重复上述步骤,直到商为0。
  4. 将所有记录的余数逆序排列,即得到二进制数。

示例:

5、十进制转八进制

将十进制数转换为八进制数的方法是通过不断除以8,并记录每次除法的余数,直到商为0。然后将余数逆序排列。

转换步骤:

  1. 将十进制数除以8,记录余数。
  2. 用商继续除以8,继续记录余数。
  3. 重复上述步骤,直到商为0。
  4. 将所有记录的余数逆序排列,即得到八进制数。

示例:

6、十进制转十六进制

将十进制数转换为十六进制数的方法是通过不断除以16,并记录每次除法的余数,直到商为0。然后将余数逆序排列。如果余数是10到15,分别用A到F表示。

转换步骤:

  1. 将十进制数除以16,记录余数。
  2. 用商继续除以16,继续记录余数。
  3. 重复上述步骤,直到商为0。
  4. 将所有记录的余数逆序排列,即得到十六进制数。

示例:

十六进制和八进制是为了简化表示和使二进制更易读而引入的。因为二进制在表示较大的数时,通常位数较多,八进制和十六进制可以简化二进制的位数个数,是数据更易读。

7、二进制转八进制

将二进制数转换为八进制数的方法是将二进制数每三位一组(从右到左),然后将每组转换为对应的八进制数。为什么是三位呢,因为三位二进制数刚好可以表示 0 到 7 这八个数,刚好是八进制的八个基数。

转换步骤:

  1. 从右向左,将二进制数每三位一组,不足三位的前面补0。
  2. 将每组转换为对应的八进制数。
  3. 组合所有八进制的数,得到最终结果。

示例1:

示例2:

8、二进制转十六进制

将二进制数转换为十六进制数的方法是将二进制数每四位一组(从右到左),然后将每组转换为对应的十六进制数。为什么是四位呢,因为四位二进制数刚好可以表示 0 到 15 这16个数,刚好是十六进制的十六个基数。

转换步骤:

  1. 从右向左,将二进制数每四位一组,不足四位的前面补0。
  2. 将每组转换为对应的十六进制数。
  3. 组合所有十六进制的数,得到最终结果。

示例1:

示例2:

9、八进制转二进制

将八进制数转换为二进制数的方法是通过将八进制数的每一位数字转换为对应的三位二进制数,然后将这些二进制数拼接起来。

转换步骤:

  1. 将八进制数的每一位数字转换为对应的三位二进制数。
  2. 将所有的三位二进制数拼接起来,即得到二进制数。

示例:

10、十六进制转二进制

将十六进制数转换为二进制数的方法是通过将十六进制数的每一位数字转换为对应的四位二进制数,然后将这些二进制数拼接起来。

转换步骤:

  1. 将十六进制数的每一位数字转换为对应的四位二进制数。
  2. 将所有的四位二进制数拼接起来,即得到二进制数。

示例:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机械革命硬盘数据恢复:深度解析与实用指南

随着科技的飞速发展,数据存储与备份已成为我们日常生活和工作中不可或缺的一部分。然而,硬盘故障、误删除或格式化等意外情况时常发生,导致重要数据丢失,给用户带来极大的困扰。本文将以“机械革命硬盘数据恢复”为主题&#xff0…

【惯性传感器imu】—— WHEELTEC的惯导模块的imu的驱动安装配置和运行

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、IMU驱动安装1. 安装依赖2. 源码的下载3. 编译源码(1) 配置固定串口设备(2) 修改luanch文件(3) 编译 二、启动IMU1. 运行imu2. 查看imu数据 总结 前言 WHEE…

随记-点选验证码(二)

之前写过一篇文章 随记-点选验证码 ,当时借助了 ddddocr 完成了ocr 识别,这篇文章算是对之前的补充。 本次更换了新的方案: 通过 ultralytics(YOLO8)训练自己的模型 吐槽一句:标注真是一件耗时的事情啊&am…

【Matplotlib作图-2.Deviation】50 Matplotlib Visualizations, Python实现,源码可复现

目录 02 Deviation 2.0 Prerequisite 2.1 发散型条形图(Diverging Bars) 2.2 发散型文本(Diverging Texts) 2.3 Diverging Dot Plot 2.4 Diverging Lollipop Chart with Markers 2.5 面积图(Area Chart) References 02 Deviation 2.0 Prerequisite Setup.py # !pip ins…

图书推荐:ChatGPT专业知识信息课程

《ChatGPT专业知识信息课程》(ChatGPT-Expertise Informative Course) 是一本由Dwayne Anderson撰写的电子书,提供了关于ChatGPT的丰富知识。该书涵盖了与ChatGPT相关的各种主题,如其与OpenAI的关系、ChatGPT与GPT-3之间的混淆、C…

【LeetCode热题100总结】239. 滑动窗口最大值

题目描述 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入:nums [1,3,-1,-3,5,3,6,7]…

STM32-- GPIO->EXTI->NVIC中断

一、NVIC简介 什么是 NVIC ? NVIC 即嵌套向量中断控制器,全称 Nested vectored interrupt controller 。它 是内核的器件,所以它的更多描述可以看内核有关的资料。M3/M4/M7 内核都是支持 256 个中断,其中包含了 16 个系统中…

WHAT - 容器化系列(一)

这里写目录标题 一、什么是容器与虚拟机1.1 什么是容器1.2 容器的特点1.3 容器和虚拟机的区别虚拟机(VM):基于硬件的资源隔离技术容器:基于操作系统的资源隔离技术对比总结应用场景 二、容器的实现原理1. Namespace(命…

【Java】一文看懂Thread 线程池的 7 种创建方式、任务队列及自定义线程池(代码示例)

本文摘要:【Java】Thread 线程池的 7 种创建方式及自定义线程池(代码示例版) 😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专…

1. MySQL 数据库的基本操作

文章目录 【 1. SQL 的书写规则 】大小写规则常量的表示注释 【 2. RDBMS 术语 】Table 表Filed 域/字段Column 列Record 记录NULL 空值Constraint 约束数据的完整性范式 【 3. 数据库基本操作函数 】3.1 SHOW DATABASES 显示数据库3.2 CREATE DATABASE 创建数据库3.3 ALTER DA…

传输中的串扰(八)

串扰指的是有害信号从一个线网传递到相邻线网上。通常把噪声源所在的线网称为动态线或攻击线网,而把有噪声形成的线网称为静态线或受害线网。 静态线上的噪声电压的表现与信号电压完全一样。一旦在静态线上产生噪声电压,它们就会传播并在阻抗突变处出现反…

【JS重点知识03】定时器—间歇函数

一:间歇函数的应用场景 网页倒计时是需要每个一段时间需自动执行一段代码,而不需要手动去触发;间歇函数刚好满足了这一要求; 二:间歇函数的使用 1 开启定时器 语法规范: 1 setInterval(匿名函数,时间)…

HarmonyOS 鸿蒙DevEco:导入无法运行提示Sync failed

场景:导入官网下载的案例后导入发现无法运行模拟机,Notifications提示Sync failed... 解决:查看Cause发现是版本问题,通过修改相关内容来解决该问题 1、打开案例地址找到hvigor文件夹 2、打开hvigor-config.json5,将&…

【计算机毕设】SpringBoot校园资料分享平台的设计与实现 - 源码免费(私信领取)

免费领取源码 | 项目完整可运行 | v:chengn7890 诚招源码校园代理! 1. 研究目的 本项目旨在设计并实现一个基于SpringBoot的校园资料分享平台,以满足学生在学习过程中对资料分享和获取的需求。具体目标包括&#xff1a…

YOLOv5改进(五)-- 轻量化模型MobileNetv3

文章目录 1、MobileNetV3论文2、代码实现2.1、MobileNetV3-small2.2、MobileNetV3-large 3、运行效果4、目标检测系列文章 1、MobileNetV3论文 Searching for MobileNetV3论文 MobileNetV3代码 MobileNetV3 是 Google 提出的一种轻量级神经网络结构,旨在在移动设备上…

《内网渗透实战攻略》读书笔记

一、书籍介绍 本书将分为三大部分,首先介绍内网渗透技术中涉及到的各类基础概念,并介绍攻击者视角中的入侵生命周期流程。其次进行环境搭建准备,并介绍各类常用工具的使用。z后通过9套内网环境的高强度实战训练,系统性的介绍和实践…

LeetCode-93. 复原 IP 地址【字符串 回溯】

LeetCode-93. 复原 IP 地址【字符串 回溯】 题目描述:解题思路一:回溯背诵版解题思路三:0 题目描述: 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0)&#xf…

PlantUML-使用文本来画时序图

介绍 PlantUML 是一个开源工具,用户可以使用纯文本描述来创建 UML (统一建模语言) 图形。由于它使用文本来描述图形,因此可以很容易地将这些描述与源代码一起存储在版本控制系统中。然后,PlantUML 负责将这些描述转换为图形。 资料 官方文…

阿里云短信服务使用(Java)

文章目录 一、流程1.打开短信服务2.提交材料申请资质3.资质通过后,申请短信签名并设置短信模板4.右上角设置AccessKey5.充值 二、参考官方文档调用API1.引入maven依赖2.调用API补充 一、流程 1.打开短信服务 登陆注册阿里云 搜索“短信服务”,点击“免…

C语言操作符详解(二)

统计整数在二进制中1的个数&#xff1a; 这是上一篇文章留下的问题&#xff0c;这里为大家作答&#xff1a; //统计二进制中1的个数 int statistics(int a) {int count 0;for (int i 0; i < 32; i){if (a & 1){count;}a a >> 1;}//while (a)//{// a a &…