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 是十进制的 5int num2 = 0b1101; // 二进制中的 1101 是十进制的 13int num3 = 0B100000; // 二进制中的 100000 是十进制的 32// 打印结果System.out.println("num1 = " + num1); // 输出: num1 = 5System.out.println("num2 = " + num2); // 输出: num2 = 13System.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 是十进制的 83int num2 = 077;  // 八进制中的 77 是十进制的 63int num3 = 05;   // 八进制中的 5 是十进制的 5// 打印结果System.out.println("num1 = " + num1); // 输出: num1 = 83System.out.println("num2 = " + num2); // 输出: num2 = 63System.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; // 十进制的 223int num2 = 93;  // 十进制的 93int num3 = 56;   // 十进制的 56// 打印结果System.out.println("num1 = " + num1); // 输出: num1 = 223System.out.println("num2 = " + num2); // 输出: num2 = 93System.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 是十进制的 6719int num2 = 0xFF;   // 十六进制中的 FF 是十进制的 255int num3 = 0x7E;   // 十六进制中的 7E 是十进制的 126// 打印结果System.out.println("num1 = " + num1); // 输出: num1 = 6719System.out.println("num2 = " + num2); // 输出: num2 = 255System.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. 将所有的四位二进制数拼接起来,即得到二进制数。

示例:

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

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

相关文章

MYSQL一、MYSQL的了解

一、MySQL概述 1、数据库相关概念 为了方便,我们一般把mysql数据库管理系统简称位mysql数据库 通过可以操作数据库管理系统,然后再通过数据库管理系统操作(数据库)和(数据库里面的数据) 2、当前主流的关系…

第二站:Java——集合框架的深邃海洋(续)

### Java——集合框架的深邃海洋(续) 在我们的Java集合框架探索之旅中,我们已经涉足了基本操作、高级特性,现在让我们深入探讨一些特定场景下的应用和进阶技巧,比如集合的分区操作、分组、并行流的性能考量&#xff0…

视频汇聚EasyCVR平台视图库GA/T 1400协议与GB/T 28181协议的区别

在公安和公共安全领域,视频图像信息的应用日益广泛,尤其是在监控、安防和应急指挥等方面。为了实现视频信息的有效传输、接收和处理,GA/T 1400和GB/T 28181这两个协议被广泛应用。虽然两者都服务于视频信息处理的目的,但它们在实际…

Llama(一):Mac M1芯片运行Llama3

目录 安装Ollama for Mac 下载Llama 3模型 运行Llama3 试用Llama3 在命令行中使用Llama3 背景 本地环境:Mac M1,16GB内存 安装Ollama for Mac 官方地址 https://ollama.com/download/Ollama-darwin.zip 链接: 百度网盘 提取码: 8wqx 下载Llama 3模型 oll…

从国产低代码龙头企业零赛云看零(低)代码在软件开发行业和工业企业的应用趋势

从国产低代码龙头企业零赛云看零(低)代码在软件开发行业和工业企业的应用趋势 --- 什么是零(低)代码?零(低)代码开发完整指南 一、什么是零(低)代码? 零&am…

C项目实战:俄罗斯方块

图形 终端控制代码 (ANSI/VT100) 简介 终端 (控制) 代码是用来控制终端的特殊命令,它可以改变颜色和光标的位置,实现那些无法被程序本身完成的操作。 参考文章:终端控制代码 (ANSI/VT100) Terminal Codes 简介 (转载翻译)_终端代码-CSDN博…

pdb文件名称被修改导致pdb文件加载失败的实战排查案例分享

目录 1、概述 2、问题说明 3、pdb文件加载失败的可能原因有哪些? 4、使用!sym noisy打开pdb加载详情,发现pdb文件名称确实被修改了 5、Windbg是如何知道要加载pdb文件名称的? C软件异常排查从入门到精通系列教程(专栏文章列表…

【html】如何给桌面设置渐变背景,通过HTML代码实现

录制的步骤 可以执行以下操作: 查看录制的步骤以幻灯片放映形式查看录制的步骤查看其他详细信息步骤 下一页 步 1: (‎2024/‎6/‎2 16:32:49) 用户在"项目视图 (列表)"上右键单击(在"G:\背景"中) 对于此步骤,没有保存任何屏幕截图。 上一个 下一页 步 …

linux进程加载和启动过程分析

我们的源代码通过预处理,编译,汇编,链接后形成可执行文件,那么当我们在终端敲下指令$ ./a.out argv1 argv2 后,操作系统是怎么将我们的可执行文件加载并运行的呢? 首先知道,计算机的操作系统的启动程序是写死在硬件上的,每次计算机上电时,都将自动加载启动程序,之后…

Java面试题:请对比synchronized和Lock接口,说明它们的优缺点和适用场景

synchronized关键字和java.util.concurrent.locks.Lock接口都是Java中用于实现线程同步的手段。它们在很多方面有相似之处,但也有一些关键的区别。以下是它们之间的对比: synchronized 优点: 使用简单:使用synchronized关键字可…

Spring Bean Request作用域:深入解析与实战洞察

1. 引言 在Spring框架中,Bean的作用域(Scope)定义了Bean的生命周期和可见性。其中,Request作用域是专为Web应用设计的,它在每个HTTP请求的生命周期内提供一个全新的Bean实例。理解Request作用域的工作机制及其背后的源…

翻译《The Old New Thing》- What a drag: Dragging a Uniform Resource Locator (URL)

What a drag: Dragging a Uniform Resource Locator (URL) - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20080312-00/?p23133 Raymond Chen 2008年03月12日 麻烦的拖拽:拖拽统一资源定位符(URL) 简要 …

C++多态-联编

静态联编 静态联编支持的多态性,我们将其称为编译时的多态性,又称为静态的多态性,因为联编的过程是在程序开始执行之前进行的。在编译、连接的过程中,系统可以根据类型匹配等特征确定程序中调用与具体执行函数的关系,…

MySQL入门学习-查询进阶.分页查询

在 MySQL 中,分页查询是一种用于在查询结果中获取特定页面数据的技术。它通常用于处理大量数据的情况,以便将结果分为多个页面进行显示或处理。 以下是关于分页查询的一些关键概念和特点: 1. 分页查询的特点: - 数据量控制&…

识别同一用户

识别来自同一终端的访问技术 使用HTTP访问Web服务器时,会反复地执行页面的迁移和图像的读取等通信处理。而不同的通信都是使用不同的方式进行处理。因此服务器端就不需要对每个终端的状态进行单独的管理,可以降低服务器的负载。 另外,…

python安装phonopy教程

Phonopy 是一个用于计算材料晶格动力学性质的 Python 包。它可以用于计算声子频率、声子态密度、热力学性质等。 安装 Phonopy 步骤 1: 安装依赖项 首先,确保你已经安装了 Python 和 pip。然后,安装一些必要的依赖项: pip install numpy scipy matplotlibPhonopy 还依赖于…

AndroidStudio编译很慢问题解决

如果gradle同步、编译下载很慢,可以换一下仓库阿里云镜像 repositories {maven { url https://maven.aliyun.com/repository/google } maven { url https://maven.aliyun.com/repository/jcenter } maven { url https://maven.aliyun.com/repository/public } goog…

Java(十二)---认识异常

文章目录 前言1. 异常的概念与体系结构1.1.异常的概念1.异常的体系1.3 异常的分类 2. 异常的处理2.1 防御式编程2.2 异常的抛出2.3 异常的捕获2.3.1 异常声明throws2.3.2 try-catch捕获并处理2.3.3 finally 2.4 异常的处理流程 3. 自定义异常类 前言 这一篇就是咱们学习JavaSE…

让SDWebImage加载webp格式的图片

感谢大佬 iOS 加载webp格式的图片 pod "SDWebImage/WebP"报错的解决办法 - 简书 pod SDWebImageWebPCoder 导入文件&#xff1a; #import <SDWebImage/SDWebImage.h> #import <SDWebImageWebPCoder/SDWebImageWebPCoder.h> 实现&#xff1a;这个可以…

C++ : 模板初阶

标题&#xff1a;C : 模板初阶 水墨不写bug 正文开始&#xff1a; C语言的问题 &#xff1a; 写不完的swap函数 在学习C语言时&#xff0c;我们有一个经常使用的函数swap函数&#xff0c;它可以将两个对象的值交换。 我们通常这样实现它&#xff1a; void swap(int t1,int t…