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

简单介绍编程进制

十进制

十进制的位权为 10,比如十进制的 123,123 = 1 * 10 ^ 2 + 2 * 10 ^ 1 + 3 * 10 ^ 0

二进制

二进制的位权为 2,比如十进制的 4,二进制为 100,4 = 1 * 2 ^ 2 + 0 * 2 ^ 1 + 0 *2 ^ 0

Java7 之前,不支持直接写二进制值,Java7 开始支持。

int a = 0b11001;

十六进制

十六进制的位权为 16,1 个 十六进制位可以理解为 4 个二进制位,比如十进制的 123,十六进制为 0x7B,123 = 7 * 16 ^ 1 + 11 * 16 ^ 0

Java 中可以直接使用十六进制进行赋值。

int a = 0x7B

十进制转二进制

  1. 整数部分:除 2 取余,直到商等于 0 为止,再逆序排列。

image

  1. 小数部分:乘 2 取整,直到积的小数部分等于 0 或者达到要求的精度,顺序排列。

  2. 最后将整数部分和小数部分合并即可。

/*比如 0.25 ,二进制为 0.01整数部分:
0 % 2 = 0 取余 0,小于 1,终止,逆序得 0小数部分:
0.25 * 2 = 0.50  取整 0
0.50 * 2 = 1.0   取整 1,小数部分为 0,终止,顺序得 01合并:
0.01*/

二进制转十进制

使用按权相加法。

/*比如 2.25,二进制为 10.012.25 = 1 * 2 ^ 1 + 0 * 2 ^ 0 + 0 * 2 ^ -1 + 1 * 2 ^ -2*/

bit 位

bit 位,计算机中表示数据的最小单位,可取 0 或 1(电路的开关)。

整数的二进制表示

任何存储于计算机中的数据,其本质都是以二进制码存储,这是由计算机硬件决定的。

根据冯·诺依曼提出的经典计算机体系结构框架,一台计算机由运算器、控制器、存储器、输入和输出设备组成。

运算器只有加法运算器,没有减法运算器(据说一开始是有的,后来由于减法运算器硬件开销太大,废弃了),所以计算机没办法直接做减法,它是通过加法间接实现的。现实中的减法也可以当成加法运算,减去一个数可以看作加上这个数的相反数。

为了表示负数,计算机引入了符号位,一般最高位(左边第一位)表示符号位,符号位为 0 表示正数,为 1 表示负数。

从硬件的角度看,只有正数加负数才算减法,正数与正数相加,负数与负数相加,都可以通过加法器直接相加。

原码

原码用第一位表示符号,其余位表示值。

byte beVar1 = 1; // 原码:0000 0001
byte beVar2 = -1; // 原码:1000 0001

反码

正数的反码等于原码,负数的反码是原码的符号位不变,其余位取反,也可以理解为它的正数原码按位取反。

byte beVar1 = 1; // 反码:0000 0001
byte beVar2 = -1; // 反码:1111 1110

补码

补码_百度百科 (baidu.com)

正数的补码等于原码,负数的补码是在反码的基础上加 1,补码取反码再加 1 又得到原码。

byte beVar1 = 1; // 补码:0000 0001
byte beVar2 = -1; // 补码:1111 1111

理解补码

8 bit 位为例,取值范围为 0000 0000 ~ 1111 1111,1111 1111 加 1 后变成 1 0000 0000,由于只有 8 位,溢出的 1 要舍弃,只能保留 0000 0000。

即 1111 1111 加 0000 0001 变成了 0000 0000,也就是说,1111 1111 等同 -1,同理可得 1111 1110 等同 -2,…… 1000 0000 等同 -128。

补码的思想类似时钟,如下图(为了类比,将 12 点改成了零点), 值在 0 ~ 11 之间,10 点等同 -2 点。

image.png

类似这样有计数范围的系统都存在一个“模”,如:时钟的计量范围是 0~11,模=12。“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器,均可化减法为加法运算。

小数的二进制表示

二进制中为表示小数,采用类似十进制的科学计数法,几乎所有的硬件和编程语言表示小数的二进制格式都是使用 IEEE 754 标准。

小数 = [符号位] [指数部分] . [小数部分]
32 位单精度二进制 = [1 个符号位] [8 个阶码位] [23 个尾数位]
64 位双精度二进制 = [1 个符号位] [11 个阶码位] [52 个尾数位]
8 位阶码位移码偏移量 127,11 位阶码位移码偏移量 1023

单精度

双精度

/*如:2.25,二进制 10.01,先化为科学计数法 1.001 * (2 ^ 1)1.001 * (2 ^ 1)的 32 位单精度表示:符号位: 0阶码位:阶码 = 指数 + 阶码位移码偏移量 = 1 + 127 = 128,二进制 1000 0000尾数位:尾数 = 取小数点后 23 位,001 0000 0000 0000 0000 0000最终得:[0][1000 0000][001 0000 0000 0000 0000 0000]同理可得 -2.25 的二进制:[1][1000 0000][001 0000 0000 0000 0000 0000]*/public static void main(String[] args) {System.out.println(Integer.toBinaryString(Float.floatToIntBits(2.25F)));System.out.println(Integer.toBinaryString(Float.floatToIntBits(-2.25F)));
}

相关文章:

简单介绍编程进制

十进制 十进制的位权为 10,比如十进制的 123,123 1 * 10 ^ 2 2 * 10 ^ 1 3 * 10 ^ 0。 二进制 二进制的位权为 2,比如十进制的 4,二进制为 100,4 1 * 2 ^ 2 0 * 2 ^ 1 0 *2 ^ 0。 Java7 之前,不支…...

windows忘记开机密码怎么办

windows忘记开机密码怎么办 清除windows登录密码 清除windows登录密码简单方法 开机到欢迎界面时,按CtrlAltDelete两次,跳出帐号窗口,输入用户名:administrator,回车, 或者启动时按F8 选“带命令行的安全…...

SpringCloud:Eureka

目录 一、eureka的作用 二、搭建Eureka服务端 三、添加客户端 四、服务发现 提供者与消费者 服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务) 服务消费者:一次业务中,调用其它微服务的服…...

如何获取或设置CANoe以太网网卡信息(SET篇)

CAPL提供了一系列函数用来操作CANoe网卡。但是,但是,首先需要明确一点,不管是获取网卡信息,还是设置网卡信息,只能访问CAPL程序所在的节点下的网卡,而不是节点所在的以太网通道下的所有网卡 关于第一张图中,Class节点下,有三个网卡:Ethernet1、VLAN 1.100、VLAN 1.200…...

【软件测试面试题】项目经验?资深测试 (分析+回答) 我不信你还拿不到offer......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 在面试过程中&#…...

tensorflow lite简介-移动设备端机器学习

TensorFlow Lite 是一组工具,可帮助开发者在移动设备、嵌入式设备和 loT 设备上运行模型,以便实现设备端机器学习。 支持多平台 支持多种平台,涵盖 Android 和 iOS 设备、嵌入式 Linux 和微控制器。 原理/流程 工作原理或者使用流程就是上面…...

Node.js常用知识

1、什么是 Node.js 【】Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。浏览器是 js 的前端运行环境,node.js 是 js 的后端运行环境。他们都有 V8 引擎,有各自的内置 API 2、fs 文件系统模块 【】fs 模块是 Node.js 官方提供的、用来操作文件…...

踩坑:maven打包失败的解决方式总结

Maven打包失败原因总结如下: 失败原因1:无法使用spring-boot-maven-plugin插件 使用spring-boot-maven-plugin插件可以创建一个可执行的JAR应用程序,前提是应用程序的parent为spring-boot-starter-parent。 需要添加parent的包spring-boot…...

【C++】位图

文章目录位图概念位图操作位图代码位图应用位图概念 boss直接登场: 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中❓ 40亿个整数,大概就是16GB。40亿个字节大概就是4GB。 1Byt…...

蓝桥杯-考勤刷卡

蓝桥杯-考勤刷卡1、问题描述2、解题思路3、代码实现1、问题描述 小蓝负责一个公司的考勤系统, 他每天都需要根据员工刷卡的情况来确定 每个员工是否到岗。 当员工刷卡时, 会在后台留下一条记录, 包括刷卡的时间和员工编号, 只 要在一天中员工刷过一次卡, 就认为他到岗了。 现在…...

如何利用站内推广和站外推广提高转化率?

在如今的网络时代,拥有一个好的网站是非常重要的。但是,光有一个好的网站是不够的,为了达到我们的目标,需要不断地提高网站的转化率。而在实现这个目标的过程中,站内推广和站外推广是两个非常关键的因素。 站内推广是…...

Java多线程(三)——线程池及定时器

线程池就是一个可以复用线程的技术。前面三种多线程方法就是在用户发起一个线程请求就创建一个新线程来处理,下次新任务来了又要创建新线程,而创建新线程的开销是很大的,这样会严重影响系统的性能。线程池就相当于预先创建好几个线程&#xf…...

Linux命令行安装Oracle19c教程和踩坑经验

安装 下载 从 Oracle官方下载地址 需要的版本,本次安装是在Linux上使用yum安装,因此下载的是RPM。另外,需要说明的是,Oracle加了锁的下载需要登录用户才能安装,而用户是可以免费注册的,这里不做过多说明。 …...

Linux常用命令等

目录 1.Linux常用命令 (1)系统命令 (2)文件操作命令 2.vim编辑器 3.linux系统中,软件安装 (1) rpm 安装,RedHat Package Manager (2)yum 安装 (3)源代码编译安装 1.Linux常用命令 Linux命令是非常多的,对于像嵌入式开发工程师,运维工程师需要掌握的命令是非常多的.对于…...

CEC2014:鱼鹰优化算法(Osprey optimization algorithm,OOA)求解CEC2014(提供MATLAB代码

一、鱼鹰优化算法简介 鱼鹰优化算法(Osprey optimization algorithm,OOA)由Mohammad Dehghani 和 Pavel Trojovsk于2023年提出,其模拟鱼鹰的捕食行为。 鱼鹰是鹰形目、鹗科、鹗属的仅有的一种中型猛禽。雌雄相似。体长51-64厘米…...

MyBatis底层原理【源码运行时序图】

MyBatis初始化流程🛷 以下代码为例🎉 🎇可对应源码阅读 MyBatis初始化流程✨ #mermaid-svg-yoG1e8Dnp3UIAOUW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-yoG1e8Dnp3UIAOU…...

k8s 系列之 CoreDNS 解读

k8s 系列之 CoreDNS CoreDNS工作原理 kuberntes 中的 pod 基于 service 域名解析后,再负载均衡分发到 service 后端的各个 pod 服务中,如果没有 DNS 解析,则无法查到各个服务对应的 service 服务 在 Kubernetes 中,服务发现有几…...

从测试鸡蛋硬度到跳表的设计

我回忆起六七年前的一道题鸡蛋掉落问题,有幸在leetCode上找到题目了 原题是2枚鸡蛋 leetCode有拓展,k枚鸡蛋 具体的思路是这样的。 以2枚鸡蛋验证100层为例 不能直接二分查找,因为你在50层测试时,如果直接鸡蛋碎了,那…...

3D立体视觉成像原理介绍【一 】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言什么是基线?基线是如何影响3D图像质量激光三角测量飞行时间结构光相机时间编码结构光前言 本文将介绍3D立体视觉的成像原理,包括【激光三…...

CEC2021:鱼鹰优化算法(Osprey optimization algorithm,OOA)求解CEC2021(提供MATLAB代码

一、鱼鹰优化算法简介 鱼鹰优化算法(Osprey optimization algorithm,OOA)由Mohammad Dehghani 和 Pavel Trojovsk于2023年提出,其模拟鱼鹰的捕食行为。 鱼鹰是鹰形目、鹗科、鹗属的仅有的一种中型猛禽。雌雄相似。体长51-64厘米…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...