进 制
进制
- 进制
- 一、进制概念
- 二、进制的转换
- 三、二进制的运算
- 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的,在满足这个…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...