进 制
进制
- 进制
- 一、进制概念
- 二、进制的转换
- 三、二进制的运算
- 3.1 与运算
- 3.2 或运算
- 3.3 非运算
- 3.4 异或运算
- 3.5 位运算(位移)
- 四、原码、反码、补码
- 4.1 原码
- 4.2 反码
- 4.3 补码
- 五、浮点数十进制转换成二进制
进制
一、进制概念
十进制是指逢十进一。
计算机中二进制表示数字对于人类来说太长了,一般情况下,通常使用8进制或者16进制来简短的描述2进制。
二、进制的转换
找寻规则:
10进制转换成二进制(倒除法):
52采用倒除法计算除以2的余数,反向统计为110100
二进制转换成十进制:
99== 9 * 10 + 9
876 = 8 * 100 + 7 * 10 + 6
12345 = 1 * 10000 + 2 * 1000 + 3 * 100 + 4 * 10 + 5
56987 = 5 * 10的4次方 + 6 * 10的3次方 + 9 * 10的二次方+ 8* 10的一次方 + 7 * 10的零次方
任何进制转换成10进制规则为:110100 = 1 * 2的二次方 + 1 * 2的四次方 + 1 * 2的5次方 = 4 + 16 + 32 = 52
练习:将以下10进制转换成2进制
123 = 1111011
876 = 1101101100
3456 = 110110000000
987 = 1111011011
将以下二进制转换成10进制
10110011 = 179
1100110011 = 819
1111000011 = 963
1 111 000 011 = 01703
11 1100 0011 = 0x3c3
注意:在Java中,书写2进制使用0b开头,8进制用0开头,十六进制用0x开头。
三、二进制的运算
3.1 与运算
计算规则:同为1则为1,否则为0
3 & 5
0000 0011
0000 0101
0000 0001
4 & 5
0000 0100
0000 0101
0000 0100
3.2 或运算
计算规则:只要有一个为1,结果为1
3 | 5
0000 0011
0000 0101
0000 0111
4 | 5
0000 0100
0000 0101
0000 0101
注意:如果在逻辑判断中使用&或者|,在判断结果上与&&或者||是一样的,但是&&或者||有短路的特征。而&或者|一定要计算两边的结果。
if(a > b) && (c > d), 假设a<b,那么则不去计算c>d的结果。直接返回结果为false。(短路)
if(a > b) || (c > d),假设 a>b,那么则不去计算c>d的结果。直接返回true。(短路)
if(a > b) & (c > d),结果与&&结果一致。但是即使a > b不成立,也会去计算c > d结果。
3.3 非运算
在Java中!作为取反运算符,一般用在boolean变量上,表示取反。
对于数字来说,使用~作为取反(非)运算符。表示各位取反,0变1,1变0
~4 = -5
0000 0000 0000 0000 0000 0000 0000 0100
1111 1111 1111 1111 1111 1111 1111 1011
3.4 异或运算
^作为异或运算符。
计算规则,相异为1,相同为0。
3 ^ 5 = 6
6 ^ 5 = 3
6 ^ 3 = 5
0000 0011
0000 0101
0000 0110
0000 0101
0000 0011
–
0000 0110
0000 0011
0000 0101
规则:任何数与另外一个数字异或两次得到该数字本身。
小技巧:可以不用第三个变量实现两个整数的交换。
3.5 位运算(位移)
>>向右位移。移动n位相当于除以2的n次方。3 >> 1 = 1 相当于 3 / 2 = 1
0000 0011
0000 0001
3 >> 2 相当于 3 / 4 = 0
<<向左位移。移动n位相当于乘以2的n次方。低位补03 << 1 = 6 相当于3 * 2 = 6
0000 0011
0000 0110
注意:性能比乘除高得多。
>>>表示符号位跟着一起移动,一般对负数才看到作用。例如:-2 >>> 1变成int的最大值注意:没有
<<<符号。
四、原码、反码、补码
计算机中采用二进制方式来存储数字。对于存储数字的格式涉及原码反码补码概念。
注意:正数原码反码补码一样。负数则不同。
4.1 原码
直接通过10进制转换成二进制之后的编码。
例如:3 ,原码为0000 0011
注意:负数的表示方式,在最高位使用符号位1来表示,其他位与正数方式一致。
例如:-3,原码表示为:1000 0011
在计算机中,如果直接采用原码方式来存储,那么有一个问题,当3 + (-3),理论来说应该等于0,实际上会出现0000 0011 + 1000 0011 = 1000 0110,所以不能采用原码方式来存储。
4.2 反码
由于不能采用原码来存储,我们相当于3的相反数是-3,是否可以把-3的原码直接取反,来实现与3相加得到0的效果呢?
于是提出概念,将负数的反码设计为:符号位不变,其他各位取反。对于正数来说,反码与原码一致。
3 原码为:0000 0011
-3 原码表示为:1000 0011,使用反码1111 1100
0000 0011 + 1111 1100 = 1111 1111,发现也不能直接使用反码存储。
4.3 补码
需要使用正数+负数为0的效果,需要在负数的反码的结果上加1.
提出补码的概念,即正数原码反码补码一致,负数补码等于反码+1。
3 原码为:0000 0011
-3 原码表示为:1000 0011,使用反码1111 1100,使用补码1111 1101
0000 0011 + 1111 1101 = 1 0000 0000,由于字节数对于类型的限制,最前面的1会截断(去掉),得到0
理解非运算中-5在计算机以补码的形式存在。
byte b = (byte)128;
1000 0000
1111 1111
1 0111 1111
byte的范围-128 - 127
127 = 0111 1111
-127 1111 1111 1000 0000 1000 0001
0 = 0000 0000
-128= 1000 0000
经典面试题:
byte b = 1;
b++;
b = b + 1;
byte与short之间运算结果是int,将一个int赋值到byte中,需要强制转换类型,而b++自带类型转换。
五、浮点数十进制转换成二进制
整数部分按照整数的方式转换。小数部分乘以2,减1
3.2
11.0011001100110011001100110011001100110011
这就是导致浮点数不精确的原因。
相关文章:
进 制
进制进制一、进制概念二、进制的转换三、二进制的运算3.1 与运算3.2 或运算3.3 非运算3.4 异或运算3.5 位运算(位移)四、原码、反码、补码4.1 原码4.2 反码4.3 补码五、浮点数十进制转换成二进制进制 一、进制概念 十进制是指逢十进一。 计算机中二进制…...
pycharm关联github、新建以及更新仓
此处已经默认你安装了git以及pycharm,这篇文章将会教给大家如何利用pycharm管理自己的github. 目录 pycharm关联github设置 Github创建新的仓 仓库的更新 pycharm:2022。不同版本界面略有不同。 pycharm关联github设置 设置PyCharm,打开File --> Settings -…...
java基础知识之小碎片(自问自答版本)---嘻嘻,春招加油呀~
1.public/private/protected/default的区别? public:对所有类可见 private 只有类本身可以访问,其他类想访问可以通过该类的成员方法访问如getter/setter protected:对同一包内的类和所有子类可见 default:在同一包内可见,不加修饰符 2.jav…...
蚁群算法c++
//轮盘赌选择下一步行进城市 int citySelect(int k, int f) { int c 0;//记录蚂蚁可行进的城市个数 //1、计算可行进的各城市 选择概率 for (int m 0; m < cityNum; m) { //若城市(i,j)之间有路且j不在蚂蚁k的禁忌表中…...
北大青鸟天府校区IT学习大揭秘
口罩已放开,一切都要重新出发。 开年才一个多月,已经有很多小伙伴想培训转行IT行业或者已经在咨询、报名培训IT技术。作为老牌培训机构,也有很多小伙伴相信我们,选择了我们。很感谢大家的信任,作为老牌培训机构&#…...
04 Linux errno.h错误码中文注释
Linux错误码中文注释 作者将狼才鲸创建日期2023-03-04/******************************************************************************* \brief 错误码* \note 基于linux_6.1-rc4\include\uapi\asm-generic\errno-base.h* linux_6.1-rc4\tools\arch\alpha\include\uapi…...
MySQL表的约束
文章目录表的约束空属性默认值列描述zerofill主键自增长唯一键外键表的约束 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如说我们的居民…...
Go语言的条件控制语句及循环语句的学习笔记
一、Go的条件控制语句 Go 语言提供了以下几种条件判断语句: 语句描述if 语句if 语句 由一个布尔表达式后紧跟一个或多个语句组成。if…else 语句if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。if 嵌套语句你可以在 if 或…...
D. Linguistics(思维 + 贪心)
Problem - D - Codeforces Alina发现了一种奇怪的语言,它只有4个单词:a, B, AB, BA。事实也证明,在这种语言中没有空格:一个句子是通过将单词连接成一个字符串来写的。Alina发现了一个这样的句子,她很好奇:有没有可能它恰好由a个单词a, b个单…...
maxWell数据迁移
目录 1.开启mysql的binlog 1.1: Statement-based 1.2: Row-based 1.3: mixed 2. 重启mysql服务 3. 创建Maxwell所需数据库和用户 4. 配置Maxwell 5. Maxwell启停(实时同步) 6. 历史数据全量同步 这里使用maxWell对mysql数据迁移到kafka中 官网下载地址点击下载 注&#x…...
混合图像python旗舰版
仔细看这个图像。然后后退几米再看。你看到了什么?混合图像是指将一张图片的低频与另一张图片的高频相结合的图片。根据观看距离的不同,所得到的图像有两种解释。在上面的图片中,你可以看到阿尔伯特爱因斯坦,一旦你离开屏幕或缩小…...
开发手册——一、编程规约_5.集合处理
这篇文章主要梳理了在java的实际开发过程中的编程规范问题。本篇文章主要借鉴于《阿里巴巴java开发手册终极版》 下面我们一起来看一下吧。 1. 【强制】关于 hashCode 和 equals 的处理,遵循如下规则: 只要重写 equals,就必须重写 hashCod…...
【elastic】elastic高可用集群部署
文章目录前言一、资源分享1、包含源码包、配置文件二、部署过程三、报错锦集四、es的部分相关命令前言 本博客内容仅为记录博主思路,仅供参考,一切以自己实践结果为准。 一、资源分享 1、包含源码包、配置文件 链接:https://pan.baidu.com…...
初识Liunx下的进程状态和环境变量以及进程优先级
文章目录前言1.进程状态1.阻塞与挂起2.Linux下的进程状态1.概念知识2.R状态2.休眠状态(S/D)3.T状态4.Z状态(僵尸进程)和X状态5.孤儿进程3.环境变量1.概念2.获取环境变量1.环境变量表2.函数获取环境变量3.关于环境变量的理解和main函数中的两个参数1.环境变量的理解2…...
JavaEE——何为线程及创建线程
文章目录一、认识线程1. 线程的概念2. 出现多线程的原因3. 进程与线程4. 对多线程的详细解释二、初次实现多线程代码1. 初步了解2. 使用 Java 中的工具查看当前的所有线程3. Java 中创建线程的多种方式一、认识线程 1. 线程的概念 所谓线程,就是指在一个 ‘执行流…...
linux配置核查MySQL 配置规范 (Linux)_S3A3G3
linux的配置核查问题: 解决: 1.检查是否禁止mysql对本地文件存取 方法一:在my.cnf的mysql字段下加local-infile0 方法二:启动mysql时加参数local-infile0 /etc/init.d/mysql start --local-infile0 假如需要获取本地文件…...
Protobuf简介
Protobuf简介 1. Protocol Buffers1.1. 什么是Protocol Buffers?1.2. 选择你最喜欢的语言1.3. 如何开始2. Protocol Buffer Basics: C++2.1. 问题领域2.2. 在哪里找到示例代码2.3. 定义协议格式(Defining Your Protocol Format)1. Protocol Buffers Protocol Buffers(协议缓冲…...
【Kubernetes】第十七篇 - ECS 服务停机和环境修复
一,前言 上一篇,介绍了 Secret 镜像的使用; 三台服务每天大概 15 块钱的支出,用一个月也是不少钱; 闲时可以停掉,这样每天只有 4 块钱支出,剩下一大笔; ECS 服务停机后公网 IP 会…...
Vue2的生命周期(详解)
Vue的生命周期一、生命周期的概念二、钩子函数三、Vue2的生命周期3.1 初始化阶段3.2 挂载阶段3.3 更新阶段3.4 销毁阶段一、生命周期的概念 Vue实例的生命周期: 从创建到销毁的整个过程 二、钩子函数 Vue框架内置函数,随着组件的生命周期阶段,自动执行 作用:特定的时间点,执行特…...
Potions (Hard Version) and (Easy Version)(背包DP + 反悔贪心)
[TOC](Potions (Hard Version) and (Easy Version)) 一、Potions(Easy Version) 1、问题 2、分析(背包DP 贪心) 简而言之就是我们需要从左到右开始选数字,选的过程中我们需要保证我们选的数字的和始终是大于等于0的,在满足这个…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
