进 制
进制
- 进制
- 一、进制概念
- 二、进制的转换
- 三、二进制的运算
- 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的,在满足这个…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
