计算机组成原理 | 理解二进制编码

news2024/12/25 23:37:34

二进制的转换

二进制——> 十进制

  • 从右到左的第 N 位,乘上一个 2 的 N 次方,然后加起来,就变成了一个十进制数
  • 例如二进制数:0011,对应的十进制表示,就是 0 × 2 3 + 0 × 2 2 + 1 × 2 1 + 1 × 2 0 = 3 0×2^3+0×2^2+1×2^1+1×2^0=3 0×23+0×22+1×21+1×20=3,代表十进制的 3 3 3

十进制——> 二进制

  • 短除法

    1. 将十进制数除以2,并记录余数。
    2. 将商继续除以2,再次记录余数。
    3. 重复此过程,直到商为0为止。
    4. 将记录的余数按相反的顺序排列,即可得到对应的二进制数。

例如,将十进制数23转换为二进制:

  • 23 ÷ 2 = 11 余 1
  • 11 ÷ 2 = 5 余 1
  • 5 ÷ 2 = 2 余 1
  • 2 ÷ 2 = 1 余 0
  • 1 ÷ 2 = 0 余 1

然后,将记录的余数按相反的顺序排列:10111

二进制的相加操作

二进制相加的规则如下:

  • 0 + 0 = 0
  • 0 + 1 = 1
  • 1 + 0 = 1
  • 1 + 1 = 0,产生一个进位(carry)

例如:

   1 0 1 1     (1011)
+  0 1 0 1     (0101)
------------
   1 1 0 0     (1100)
  • 从最右边的位开始相加,根据规则,1 + 1 = 0,并且产生了一个进位。这个进位需要加到下一位的相加结果中。依次相加,最后得到结果1100。
  • 如果相加的两个二进制数的位数不同,那么在相加之前需要对齐它们的位数。可以在较短的二进制数的左侧补零,使它们的位数相等,然后再进行相加操作

二进制的减法操作

减法运算步骤

  • 二进制减法可以通过将减法转换为加法来完成,其中使用补码形式进行相加,并进行进位处理。

下面是二进制减法运算的步骤:

  1. 将减数转换为补码形式(如果减数为负数)。

    • 如果减数为正数,无需转换。
    • 如果减数为负数,需要将其转换为补码形式。转换方法是先取其绝对值的二进制表示形式,然后按位取反(0变为1,1变为0),最后加1。
  2. 使用补码形式的减数与被减数进行二进制相加。

    • 采用与二进制加法相同的步骤,从最低位(最右边)开始逐位相加,并处理进位。
  3. 检查结果的最高位(最左边的位)确定其正负性。

    • 如果最高位为1,表示结果为负数。
    • 如果最高位为0,表示结果为正数。
  4. 如果结果为负数,将结果转换为正数形式。

    • 将结果的补码形式的最高位取反(0变为1,1变为0)得到反码。
    • 对反码加1得到正数形式。
  5. 最终结果即为减法的结果。

减法示例

假设我们要计算-51的结果:

-5 + 1 = ?
  1. 被减数(-5)转换为补码形式:

    首先,取其反码:1010

    然后,将反码加1:1011

    所以,-5的补码为:1011

  2. 1的二进制表示为:0001

现在,我们将进行二进制的相加操作:

  1011  (-5)
+ 0001  (+1)
----------

从最右边的位开始相加:

  • 第一位(最低位):1 + 1 = 10。将0写在当前位上,并将1作为进位。
  1011  (-5)
+ 0001  (+1)
----------
     0
  • 第二位:1(进位)+ 1 + 0 = 10。将0写在当前位上,并将1作为进位。
  1011  (-5)
+ 0001  (+1)
----------
    00
  • 第三位:1(进位)+ 0 + 0 = 1。将1写在当前位上。
  1011  (-5)
+ 0001  (+1)
----------
   100
  • 第四位:1 + 0 = 1。将1写在当前位上。
  1011  (-5)
+ 0001  (+1)
----------
  1100
  • 最终结果的最高位为1,说明结果是负数,所以:1100是一个负数。

接下来,我们需要将结果转换为正数形式:

  1. 取补码的反码:0011
  2. 将反码加1得到:0100

最后得到:-5 + 1 = -4

表:二进制相加

(C:\Users\22319\AppData\Roaming\Typora\typora-user-images\image-20230615163731785.png)]

参考文献

  • 徐文浩. 二进制编码:“手持两把锟斤拷,口中疾呼烫烫烫”?极客时间. 2019

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云斩获 4 项年度云原生技术服务优秀案例

日前,在 ICT 中国2023 高层论坛-云原生产业发展论坛上,由阿里云容器服务提供技术支持的 “数禾科技”和“智联招聘” 两大案例以及阿里云云原生 AI 套件、云原生 FinOps 成本分析套件两大产品技术方案,共同获得 2023 年度云原生应用实践先锋—…

oai核心网启动多切片自动生成方法

简介 启动一个切片需要: 核心网侧: 启动核心网yaml文件及相关配置文件(datebase conf healthscripts) 对应业务的sever (如)基站侧: 虚拟机 启动ueransim的yaml文件及相关配置 代理程序&#…

拿捏指针(一)---对指针的基本认识(初级)

文章目录 指针是什么?指针的定义指针的大小 指针类型指针有哪些类型?指针不同类型有什么意义? 野指针野指针的成因如何避免野指针? 指针运算指针 - 整数指针 - 指针指针的关系运算 二级指针 指针是什么? 指针的定义 …

DNDC模型建模方法及在土壤碳储量、温室气体排放、农田减排、土地变化、气候变化

由于全球变暖、大气中温室气体浓度逐年增加等问题的出现,“双碳”行动特别是碳中和已经在世界范围形成广泛影响。国家领导人在多次重要会议上讲到,要把“双碳”纳入经济社会发展和生态文明建设整体布局。同时,提到要把减污降碳协同增效作为促…

MySQL----索引

文章目录 一、索引的概念二、索引的作用索引的副作用创建索引的依据 三、索引的分类和创建3.1普通索引创建直接索引修改表方式创建创建表的时指定索引(不推荐使用) 3.2唯一索引直接创建唯一索引修改表方式创建创建表时指定 3.3主键索引创建表的时指定修改…

2024年天津农学院专升本拟招生专业限制报考范围

天津农学院2024年升本拟招生专业及报考范围 物流管理 科 类:文史、理工 专业报考范围:不限 人力资源管理 科 类:文史、理工 专业报考范围:不限 水产养殖学 科 类: 理工 专业报考范围如…

微服务springcloud 06.feign框架,配合ribbon 负载均衡和重试,配合hystrix 降级,监控和熔断测试

feign是ribbon hystrix 的整合 01.新建 sp09-feign 项目 第一步&#xff1a; 第二步&#xff1a;选择依赖&#xff1a; pom.xml 需要添加 sp01-commons 依赖&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://…

游泳可以戴的耳机有哪些?四款专业的游泳耳机推荐

现在人们都开始热衷于运动健身&#xff0c;运动时大多会听音乐&#xff0c;市面上的运动耳机层出不穷&#xff0c;多数都是蓝牙耳机&#xff0c;但是有一些运动不太适合。 例如游泳&#xff0c;其他运动都可以将手机放在附近&#xff0c;但是游泳就不行了。所以游泳时可以听歌的…

【云服务】阿里云服务器镜像备份到本地

​ 首先&#xff0c;让我们了解一下阿里云平台上自定义镜像的功能。通过自定义镜像&#xff0c;用户可以将云服务器的当前状态保存为镜像&#xff0c;以便在需要时快速恢复到该状态。此外&#xff0c;自定义镜像还可以作为模板创建新的云服务器&#xff0c;方便用户快速部署相同…

1742_C语言中的指针与数组

全部学习汇总&#xff1a; GreyZhang/c_basic: little bits of c. (github.com) 之所以常常把数组与指针联系到一块儿是因为数组的名字在很多时候等同于指向数组首元素的指针。在写程序的时候&#xff0c;这常常会给我们带来很多方便。尤其是需要把数组作为一个函数的处理对象时…

Java并发(十一)----线程五种状态与六种状态

1、五种状态 这是从 操作系统 层面来描述的 【初始状态】仅是在语言层面创建了线程对象&#xff0c;还未与操作系统线程关联 【可运行状态】&#xff08;就绪状态&#xff09;指该线程已经被创建&#xff08;与操作系统线程关联&#xff09;&#xff0c;可以由 CPU 调度执行 …

Android Studio实现贪吃蛇小游戏

项目目录 一、项目概述二、开发环境三、详细设计四、运行演示五、项目总结 一、项目概述 贪吃蛇是一款经典的街机游戏&#xff0c;不仅在电子游戏史上占有一席之地&#xff0c;也在很多人的童年回忆中留下了深刻的印象。在游戏中&#xff0c;玩家需要操纵一条蛇通过吃食物来增…

leetcode222. 完全二叉树的节点个数(java)

完全二叉树的节点个数 leetcode222. 完全二叉树的节点个数题目描述 递归广度优先遍历二叉树专题 leetcode222. 完全二叉树的节点个数 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/count-complete-tree-nodes 题目描述…

Linux下的打包和压缩/解压解包

文章目录 一、打包和压缩二、Linux下进行打包和压缩1.zip指令&#xff0c;unzip指令2.tar指令 一、打包和压缩 打包呢就是把所有东西装在一起&#xff0c;然后压缩就是将这一包东西给它合理摆放&#xff0c;腾出更多的空间&#xff0c;以便放更多的东西。 压缩可以将如果东西是…

【github加载不出来】github 加载不出来、获取GitHub官方CDN地址、修改系统Hosts文件 刷新缓存

目录 github 加载不出来获取GitHub官方CDN地址修改系统Hosts文件刷新缓存 github 加载不出来 获取GitHub官方CDN地址 https://www.ipaddress.com/打开后如图&#xff0c;右上角搜索查 查找这三个DNS链接的解析地址 http://github.com http://assets-cdn.github.com http://git…

java springboot整合Druid数据源配置

整合的最后一块 我们整合一个数据源 Druid 我们还是打开idea 创建一个项目 路径和版本调一下 路径选一个好的目录就可以了 至于版本 最好是 java 8 JDK 1.8 然后 Next 下一步 这里 spring boot 的版本记得选一下 不要搞太高 2.几即可 Druid 在这里 显然也是找不到的 所以 我…

安卓端Google隐私沙盒归因报告聚焦

自2022年2月Google首次提出将推出隐私沙盒至今已一年有余。现在&#xff0c;安卓端的隐私沙盒Beta测试已针对特定Android13设备正式开始。作为早期测试者&#xff0c;Adjust很高兴与 Google一同迈出增强用户隐私的第一步&#xff0c;并在接下来的旅程中继续携手同行。为帮助移动…

framework编译应用代码

代码编译 APP或Service代码单编调试 1、在aosp文件目录下在将环境变量加载到内存中&#xff0c;在终端中输入下面命令 source build/envsetup.sh 2、选择平台编译选项 lunch 3、输入后会出现一个选择列表&#xff0c;然后输入你想要的项目的序号即可。如下所示我这里选择的7…

【OpenMMLab AI实战营二期笔记】第十天 底层视觉与MMEditing

1.图像超分辨率 1.1 什么是图像超分辨率&#xff1f; 根据从低分辨率图像重构高分辨率图像 1.2 目标&#xff1a; 提高图像的分辨率高分图像符合低分图像的内容恢复图像的细节、产生真实的内容 1.3 应用&#xff1a; 经典游戏高清重制动画高清重制照片修复节约传输高清图…

当你拥有什么样的高性能计算技术水平,你才能成为一名高性能计算工程师? ...

在当今科技快速发展的时代&#xff0c;高性能计算工程师成为了推动科学研究、工程仿真和大数据处理的关键人才。尤其是我国大力发展科研基建&#xff0c;打造科研技术底座&#xff0c;这就更加需要高性能计算工程师通过自身的技术来加速科研建设和研发的进度和速度。 我们调研了…