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

java开发入门学习三-二进制与其他进制

常见的进制

常用的进制有二进制,八进制,十进制,十六进制。而我们最熟悉的是十进制,他们分别是怎么表达的呢?

定义不同的进制,写法不同

  1. 二进制(Binary)
    • 使用前缀 0b 或 0B
    • 例如:int binaryNumber = 0b1010; 表示二进制的 1010,等价于十进制的 10
  2. 十进制(Decimal)
    • 十进制数是Java中的默认数制,因此不需要前缀。
    • 例如:int decimalNumber = 10; 表示十进制的 10
  3. 八进制(Octal)
    • 使用前缀 0
    • 注意:这里只使用一个 0 作为前缀,与十六进制和二进制不同。
    • 例如:int octalNumber = 012; 表示八进制的 12,等价于十进制的 10
  4. 十六进制(Hexadecimal)
    • 使用前缀 0x 或 0X
    • 例如:int hexNumber = 0xA; 表示十六进制的 A,等价于十进制的 10
public class Main {public static void main(String[] args) {// 代码中定义的进制,无论如何在输出都是以十进制的方式输出// 二进制int binaryNumber = 0b1010;System.out.println("二进制 0b1010 等于十进制 " + binaryNumber);// 十进制int decimalNumber = 10;System.out.println("十进制 " + decimalNumber + " 等于十进制 " + decimalNumber); // 显然这里输出的是相同的数// 八进制int octalNumber = 012;System.out.println("八进制 012 等于十进制 " + octalNumber);// 十六进制int hexNumber = 0xA;System.out.println("十六进制 0xA 等于十进制 " + hexNumber);}
}

计算机底层存储

计算机存储数据,在底层是以二进制进行存储。他们都是以数据的补码进行存储,且最高位是符号位

  • 正数: 最高位是0
  • 负数:最高位是1

规定:

  • 正数的补码,反码与原码是一样的,称为三码合一
  • 负数的补码和反码,原码不一样
    • 负数的原码: 十进制转二进制,且最高位为1
    • 负数的反码:在原码的基础上,最高位不变,其余取反(0->1, 1->0)
    • 负数的补码: 反码 + 1

有了以上规则,让我们来看几个例子;

byte b1 = 2;
byte b2 = -2;

这两个十进制在计算机是怎么存储的呢?

对于:byte存储为1个字节,8个bit,

b1 正数最高位为0;2转为二进制:10;原码 = 反码 = 补码; 因此计算机存储2 就是按照以下存储

b2 为负数,最高位是1;

进制之间的转换

二进制转10进制

二进制转10进制,除开最高位为符号位,其他一次为 位数 * 2的n次方

十进制转二进制

做除法在取余数取反

其他进制之间的转换

八进制转二进制与二转十

将数字拆分为单个数字,1个数字代表2进制的3位数;

 十六转二和二转十六

将数字拆分为单个数字,1个数字代表2进制的4位数字,同上就不做案例了

http://www.lryc.cn/news/506653.html

相关文章:

  • C/S软件授权注册系统(Winform+WebApi+.NET8+EFCore版)
  • Linux —— 管理进程
  • Diffusino Policy学习note
  • 【Python】*args和**kwargs
  • 使用正则表达式提取PDF文件页数的实现方案
  • Android实现RecyclerView边缘渐变效果
  • springboot443旅游管理系统(论文+源码)_kaic
  • 利用git上传项目到GitHub
  • Rust之抽空学习系列(四)—— 编程通用概念(下)
  • K-Means 聚类:数据挖掘的瑞士军刀
  • 项目练习:若依-前端项目的目录结构介绍
  • 知网研学 | 知网文献(CAJ+PDF)批量下载
  • 设计模式期末复习
  • CentOS7源码编译安装nginx+php+mysql
  • linux CentOS系统上卸载docker
  • css中相对定位的应用场景
  • Android 获取屏幕物理尺寸
  • C缺陷与陷阱 — 8 编译与链接
  • 知识分享第三十天-力扣343.(整数拆分)
  • Springboot 整合DL4J 打造智能写作助手(文本生成)
  • SPL06 基于stm32F103 HAL库驱动(软件模拟IIC)
  • 【C#】List求并集、交集、差集
  • YOLOv8目标检测——详细记录使用ONNX Runtime进行推理部署C++/Python实现
  • mfc140u.dll是什么文件?如何解决mfc140u.dll丢失的相关问题
  • Redis篇-19--运维篇1-主从复制(主从复制,读写分离,配置实现,实战案例)
  • 【Elasticsearch入门到落地】4、Elasticsearch的安装
  • 计算无人机俯拍图像的地面采样距离(GSD)矩阵
  • 牛客网 SQL37查找多列排序
  • el-tabs标签过多
  • 如何制作搞笑配音视频?操作方法