掌握核心:二进制运算与多进制数相互转换

常用进制数

十进制(D)

十进制是人们日常生活用的最多也最熟悉的一种进位计数制,由0、1、2、3、4、5、6、7、8、9这十个数码组成,基数为10。

十进制的特点是:逢十进一,借一当十

二进制(B)

二进制由0和1两个数码组成,基数为2.

二进制的特点是:逢二进一,借一当二

其数值的每一位只能取0或1这两个数码之一。

对于十进制而言,1+1=2,而对于二进制来说,1+1=(10)2

八进制(Q或O)

八进制就是基数为8,由0、1、2、3、4、5、6、7这八个数码组成.

八进制的特点是:逢八进一,借一当八

如果某位为7时,再加上1,则向前进位1,而本位变成0

十六进制(H)

十六进制由0、1、2、3、4、5、6、7、8、9、A(10)、B(11)、C(12)、D(13)、E(14)、F(15)这十六个数码组成,基数为16。在十六进制中的10~15这六个数用英文字母A~F表示,用这来区分于十进制的数

十六进制的特点:逢十六进一,借一当十六

数制有两种表示方法

  • 数字用括号括起来,再加上数制的下标,如(12)2,(110)8、(120)10、(568)16

  • 用进位制的字母符号B(二进制)、Q或O(八进制)、D(十进制)、H(十六进制)来表示,如110D就表示十进制数110,而不是二进制

进制之间的关系如下

十进制二进制八进制十六进制
0000
1111
21022
31133
410044
510155
611066
711177
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F

二进制数的运算规则

在计算机中,采用二进制数可以非常方便地实现各种算术运算和逻辑运算。关于这优点已经在前面已经介绍过

算术运算规则

加法规则:

  • 0+0=0:任何位上两个0相加结果为0
  • 0+1=1;1+0=1:任何位上0与1相加结果为1
  • 1+1=10(实际上是十进制中的2):当两个1在同一个位置相加时,会产生一个进位(Carry),向高位有进位。相当于十进制中个位满10向更高位进1,但在二进制中则是满2产生一个进位并把当前位的结果变为0再向左移一位进1
示例:分别计算二进制数1101+1001和1111+1011的结果

请添加图片描述

减法规则:

  • 0-0=0:任何位上0减去0结果为0
  • 1-0=1:任何位上1减去0结果仍为1
  • 1-1=0:任何位上1减去1结果为0
  • 10-1=1:这里意味着二进制的2(即10)减去1(即01),无需借位,结果为1
  • 0-1=1(向高位借位后变为补码形式):在二进制中,直接用0减去1是不可能的,因此需要从高位借位。实际上,在计算机系统中,为了简化负数表示,通常采用补码(Two’s Complement)表示法。当发生这种情况时,不仅当前位置会被翻转(0变成1),而且所有更高位置也会连续借位直到找到一个1可以借或者达到最高位(符号位)。对于单个位的情况,假设允许借位的话,它会从高位借来1,然后进行减法,得到 1 - 1 = 0
示例:分别计算二进制数1101—1001和1101—1011的结果

在这里插入图片描述

在这1101-1011示例中,从最低位开始逐位相减:

  1. 最低位:1 - 1 = 0,无需借位。
  2. 第二低位:0 - 1,需要向高位借位。但在计算机中,我们采用补码运算,所以这里实际上是将0变为1(因为0的补码为1),同时把高位的1变为0。
  3. 高低位:1 - 0 = 1,无需借位。但因第二低位的借位,所以值变为0
  4. 最高位(符号位):在实际计算中,符号位不参与常规的加减运算,它用于表示正负号。

比特位逻辑运算规则

逻辑与运算(AND):0 Λ 0= 0;0 Λ 1= 0;1 Λ 0 = 0;1 Λ 1 = 1

XYX AND Y
000
010
100
111

逻辑与运算规则:有0则为0

逻辑或运算(OR):0 ∨ 0 = 0;0 ∨ 1 = 1;1 ∨ 0 = 1;1 ∨ 1=1

XYX OR Y
000
011
101
111

逻辑或运算规则:有1则为1

逻辑非运算(NOT)

XNOT X
10
01

逻辑非运算规则:0变1,1变0

逻辑异或运算(XOR): 0 ⊕ 0 =0; 0 ⊕ 1 = 1;1 ⊕ 0 = 1; 1 ⊕ 1 =0;

XYX XOR Y
000
011
101
110

逻辑异或运算规则:相同为0,不同为1

示例:分别计算二进制数1101100和1110110进行与(AND)、或(OR)运算的结果

在这里插入图片描述

示例:计算二进制数1101100和1110110进行异或(XOR)运算的结果

在这里插入图片描述

不同进制数之间的转换

r进制数转换为十进制数

方法:位权展开求和

先按位权展开,然后按照十进制运算规则进行求和计算,其结果就是转换后对应的十进制数。

(1001.10)2=1*23+0*22+0*21+1*20+1*2-1+0*2-2=9.5

(230.1)8=2*82+3*81+0*80+1*8-1=19

(12A.5)16=1*162+2*161+10*160+5*16-1=298.3125

十进制数转换为r进制数

十进制数的整数部分小数部分在转换时需做不同的计算,分别求值后再组合

  • 整数部分采用除r取余法,即逐次除以r,直至商为0,得出的余数倒排,即为r进制各位的数码
  • 小数部分采用乘r取整法,即逐次乘以r,从每次乘积的整数部分得到r进制数各位的数码,直至小数部分为0,或者满足转换精度要求为止
示例:将十进制数121.3125转换为二进制数
  • 首先,先对整数部分121进行转换
    在这里插入图片描述

由这得出:121D=1111001B

  • 对小数部分0.3125进行转换、

在这里插入图片描述

由该过程得出,0.3125D=0.0101B

将整数和小数部分组合起来得到:121.3125D=1111001.0101B

示例:将十进制数121.3125转换为八进制数
  • 首先,先对整数部分121进行转换

在这里插入图片描述

由以上过程得出,121D=171Q

  • 然后,对小数部分0.3125进行转换

在这里插入图片描述

由以上过程得出:0.3125D=0.24Q

将整数部分和小数部分整合起来得出:121.3125D=171.24Q

示例:将十进制数121.3125转换为十六进制
  • 首先,先对整数部分121进行转换
    在这里插入图片描述

由以上过程中得出:121D=79H

  • 然后,对小数部分0.3125进行转换

在这里插入图片描述

由以上过程得出:0.3125D=0.5H

将整数部分和小数部分整合起来得出:121.3125D=79.5H

二进制数、八进制数、十六进制数的相互转换

由于二进制、八进制、十六进制之间存在特殊关系:23=81,24=161,即1位八进制数相当于3位二进制数,1位十六进制数相当于4位二进制数,因此通过这关系可以得出以下

二进制数转换成八进制数的方法是:

  • 将二进制数从小数点开始,对二进制整数部分向左每3位分成一组,不足3位时向高位补0凑成3位;
  • 二进制小数部分向右每3位分成一组,不足3位的向低位补0凑成3位。每一组中的3位二进制数,分别转换成八进制数码中对应的一个数字,全部连接起来即可。
示例:把二进制数10111101.110转换为八进制数
二进制3位分组010111101.110
转换为八进制数2756

从这可以得出:10111101.110B=275.6Q

示例:把八进制数52.3转换为二进制数

把每个八进制数字改写成等值的3位二进制数,且保持高低位的次序不变

八进制分组52.3
转换为二进制数101010011

因此52.3Q=101010.011B

二进制转换为十六进制的方法是:

  • 将二进制数从小数点开始,对二进制整数部分向左每4位分成一组,不足4位时向高位补0凑成4位;
  • 二进制小数部分向右从高位向低位每4位分成一组,不足4位的向低位补0凑成4位。每一组中的4位二进制数,分别转换成十六进制数码中对应的一个数字,全部连接起来即可。
示例:将二进制数10110001.101转换为十六进制数
二进制4位分组10110001.1010
转换为十六进制数B1A

从上面得出:10110001.101B=B1.AH

示例:把十六进制数A2C.8转换为二进制数

把每个十六进制数字改写成等值的4位二进制数,且保持高低位的次序不变

十六进制数A2C.8
转换为二进制1010001011001000

因此从上面得出:A2C.8=101000101100.1000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/371323.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Crypto | CTF】BUUCTF 萌萌哒的八戒

天命:这年头连猪都有密码,真是奇葩,怪不得我一点头绪都没有 拿到软件,发现是.zip的压缩包,打不开,改成7z后缀名,打开了 发现是一张图片 也只有下面这行东西是感觉是密码了,又不可能…

GPT原始论文:Improving Language Understanding by Generative Pre-Training论文翻译

1 摘要 自然语理解包括文本蕴含、问题回答、语义相似性评估和文档分类等一系列多样化的任务。尽管大量未标注的文本语料库很丰富,但用于学习这些特定任务的标注数据却很稀缺,这使得基于区分性训练的模型难以充分发挥作用。我们展示了通过在多样化的未标…

Java split 分割字符串避坑

使用split进行字符串分割时需要注意2点 1、特殊字符作为分隔符时需要使用\\进行转义(如\\ -> \\\\; | -> \\| ) 特殊字符 .$|()[{^?*\\ 例如对"|"分隔 未转义 String str "01|02|03"; String[] strArr str.split("|");System.out.…

前端登陆加密解决方案

项目背景 环食药烟草的数据下载模块中,需要判断用户在进行数据下载时是进行了登录操作,如果没有登录要跳转登陆页面,输入账号和密码进行登录。 使用场景 项目中需要前端书写登录页面,用户输入账号密码,前端获取到用…

leetcode 3.无重复字符的最长字串(滑动窗口) (C++)DAY2

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示…

ChatGPT Plus如何升级?信用卡付款失败怎么办?如何使用信用卡升级 ChatGPT Plus?

ChatGPT Plus是OpenAI提供的一种高级服务,它相较于标准版本,提供了更快的响应速度、更强大的功能,并且用户可以优先体验到新推出的功能。 尽管许多用户愿意支付 20 美元的月费来订阅 GPT-4,但在实际支付过程中,特别是…

mac如何实现升级node版本、切换node版本

一、 查看node所有版本(前提:安装了nodejs) npm view node versions二、安装指定node版本 sudo n 版本号三、检查目前安装了哪些版本的node,会出现已安装的node版本 n四、切换已安装的node版本 sudo n 版本号其他命令 1、sudo npm cache…

154基于matlab的二维元胞自动机模拟森林火灾(生命游戏 )和模拟收费站交通流

基于matlab的二维元胞自动机模拟森林火灾(生命游戏 )和模拟收费站交通流。全国大学生美国建模竞赛,程序已调通,可直接运行。 154 元细胞自动机 森林起火 收费站交通 (xiaohongshu.com)

基于微信小程序的医保行政执法案件管理系统

本系统设计的是一个医保行政执法的网站,此网站使用户实现了不需出门就可以在手机或电脑前进行网上查询需求信息等。 用户在注册登陆后,在客户端可以实现;案件信息、结案归档、我的等。然而管理员则可以在服务端直接管理;个人中心、…

Linux校准时间 Centos

Linux校准时间 Centos 首先,确保系统中已经安装了tzdata包。如果没有安装,可以使用以下命令安装: sudo yum install tzdata设置系统时区为上海: sudo timedatectl set-timezone Asia/Shanghai验证时区设置是否生效:…

Android studio打开md无法显示md渲染问题

Where is Android Studio Markdown support plugin preview preference? - Stack Overflow android studio开发无法选择markdown渲染功能的问题 原因是java runtime出了问题 搜索下面功能 Choose Boot Java Runtime for the IDE 选择带JCEF的 可以选最新的java版本 重启之…

【计算机网络基础篇】学习笔记系列之一《TCP/IP 网络模型》

文章目录 1、问题提出2,网络协议是分层的3,应用层4,传输层5,网络层6,网络接口层7,总结 1、问题提出 为什么要有 TCP/IP 网络模型? 不同设备上的进程间通信需要通过一套通用的网络协议进行网络通…

【lesson37】自己设计用户级缓冲区

文章目录 自己设计用户级缓冲区简易MyFILE_的结构fopen_的实现fputs_的实现fclose_的实现fflush_的实现 完整版代码 自己设计用户级缓冲区 因为用户缓冲区在FILE中,所以我们直接模仿C语言提供的文件操作接口,顺便实现缓冲区。 使用文件系统的框架&#…

git rebase # |REBASE 1/1 #rebase in progress; onto

git 代码解决冲突之后会提示rebase in progress; onto 1 执行git rebase --abort 回到没有pull代码之前 2 git pull 3 解决冲突 4 git add . (不需要git commit) 5 git rebase --continue 6 git push

Java实现康复中心管理系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 普通用户模块2.2 护工模块2.3 管理员模块 三、系统展示四、核心代码4.1 查询康复护理4.2 新增康复训练4.3 查询房间4.4 查询来访4.5 新增用药 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的康复中…

【代码随想录-哈希表】两个数组的交集

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

Matplotlib热力图的创意绘制指南【第54篇—python:Matplotlib热力图】

文章目录 Matplotlib热力图的创意绘制指南1. 简介2. 基本热力图3. 自定义颜色映射4. 添加注释5. 不同形状的热力图6. 分块热力图7. 多子图热力图8. 3D热力图9. 高级颜色映射与颜色栏设置10. 热力图的动态展示11. 热力图的交互性12. 标准化数据范围13. 导出热力图 总结&#xff…

【爬虫实战】全过程详细讲解如何使用python获取抖音评论,包括二级评论

简介: 前两天,TaoTao发布了一篇关于“获取抖音评论”的文章。但是之前的那一篇包涵的代码呢仅仅只能获取一级评论。虽然说抖音的一级评论挺精彩的了,但是其实二级评论更加有意思,同时二级评论的数量是很多。所以二级评论是非常值…

适合大型企业的云计算服务器有哪些?

随着云计算技术的不断发展,越来越多的企业开始采用云计算服务来降低成本、提高效率。对于大型企业而言,选择适合的云计算服务器非常重要,因为它将直接影响企业的业务运营和数据安全。本文将介绍适合大型企业的云计算服务器类型,以…

DolphinScheduler实现隔几天调度

1.场景分析 dolphinscheduler(海豚)定时器模块-定时调度时每3秒|每3分钟|每3天这种定时,不能够跨分钟,跨小时,跨月,每次跨月等都会从每个月的第1天(第几天开始可以设定)开始重新计时…