《编码——隐匿在计算机软硬件背后的语言》精炼——第13-14章(二进制减法器——1位存储器)

news2024/12/23 17:51:21

“成功不是最终的,失败不是致命的,勇气才是最关键的。” - 温斯顿·丘吉尔

文章目录

  • 如何实现减法
    • 计算机进行减法运算的逻辑
      • 借位的代替机制
        • 二进制下的替代机制
    • 减法的电路实现
  • 反馈与触发器
    • 电铃
    • 触发器
      • R-S触发器
    • 电平触发的D型触发器

如何实现减法

计算机进行减法运算的逻辑

正常的减法竖式运算中,常常需要进行借位。借位是一种很麻烦的机制,我们要用一些技巧来避过借位产生同样的效果。

借位的代替机制

在十进制中,如果我们计算A-B,我们可以用如下式子来避过借位:

(999-B)+A+1-1000

我们举一个例子来介绍:

  1. 要计算111-108的话,先用999-108=891
  2. 891+111=1002
  3. 1002+1=1003
  4. 1003-1000=3

可以看到,结果是对的,而且没有用到借位机制。
当被减数小于减数时,我们进行一些小小的改变:

  1. 计算108-111的话,先用999-111=888
  2. 888+108=996

注意,到这一步我们会发现996+1-1000是个负数,反正都是负数,所以这时候我们直接用999减这个数,然后取相反数。

-(999-996)=-3

二进制下的替代机制

在二进制下,999要换成全1的最大数,例如:

  • 计算11011001-10001111时,999就替换成11111111,而1000则替换成100000000.

举一个二进制进行竖式运算的例子:

  1. 计算11111101-10110000
    在这里插入图片描述
  2. 先计算11111111-减数,不难看出,其结果就是对减数取反
    在这里插入图片描述
  3. 用第2步的结果加上被减数
    在这里插入图片描述
  4. 第三步结果+1
    在这里插入图片描述
  5. 减去100000000
    在这里插入图片描述

减法的电路实现

我们的目标是要在加法器基础上同时实现加法和减法。用一个开关来决定进行加法或减法运算。

  • 当进行减法运算时,我们需要对第二个输入求补码,也就是对每一位取反,但同时还要保证进行加法运算时第二个输入不变。我们用异或门(XOR)做到这一点。电路图如下:
    在这里插入图片描述
    回忆下XOR的输出表:
    请添加图片描述
    当取反符号为1时,就能起到取补码作用。上图的整个结构用一个符号表示:
    在这里插入图片描述
    解决了这个问题,接下来就可以看整体部分了:
    在这里插入图片描述
    其中SUB符号指的是上文中增加的那个指明是否是减法的开关所传递的电信号,当做减法运算时,信号为1。
  1. 最右边的SUB信号是为了执行+1的运算,作为加数直接加到结果上。
  2. 左下角的SUB运算保证进行减法运算且CO为0时,上下溢指示灯亮起。
    考虑这样一个事实:如果被减数大于减数时,由于没有进行-1000的运算,因此CO一定为1,所以CO为1说明减法运算结果为正数。当CO为0时,结果为负数,发生下溢,指示灯亮起。

注意,这个器件的最后输出结果并不能表示负数,如果下溢指示灯亮起,则手动将结果加上负号即可。

反馈与触发器

电铃

思考如下电路:
在这里插入图片描述

  1. 左边开关未关闭时,电路中无电流通过
  2. 关闭左边开关,电磁铁产生磁力,将上方铁片吸下来,电路断开,铁片弹回,电路再连通,铁片再被吸下来,循环往复。

这套电路使上方铁片快速上下运动,这就是蜂鸣器或电铃的原理。符号如图所示:
在这里插入图片描述
这种电路称为振荡器,振荡器每隔一段相同时间就能改变输出,因此可以进行计时,也称为时钟。
时钟一个循环所占用的时间成为周期,周期的倒数称为频率。

触发器

R-S触发器

看下面的电路:
在这里插入图片描述
再分析这个电路前,先回忆一下或非门的输出:
在这里插入图片描述
接下来请跟好,这个思路很重要:

  1. 先闭合上面的开关,左上角异或门输入变为0、1,输出变为0;右边异或门输入为0、0,输出变为1,灯泡亮起;输出接到左边异或门,,左边变为1、1,输出不变。
    在这里插入图片描述
  2. 断开上面的开关,左边门输出不变,灯泡依然发光。
    在这里插入图片描述
  3. 闭合下面的开关,右边或非门输出变为0,左边的门输入变为0、0,输出变为1。断开下面的开关,返回最开始的状态。
    在这里插入图片描述
    在这里插入图片描述

总结:

  • 关闭上面的开关后再断开,灯泡亮起并保持该状态。
  • 关闭下面的开关后再断开,电路回到初始状态。

上面的开关用来置位,将这个电路的输出置为1并不改变;下面的开关用来复位,将这个电路变为初始状态。
这个电路可以用来“记住”一个位,如果有很多个这种电路,就可以用来记录信息。能够“记住”某些信息的电路就称为触发器。
上图所示的电路可以画成另一个形式,其中新增了一个输出¬Q(形式比较像就用这个符号表示了),上图的灯泡处输出对应该图中的Q:
请添加图片描述
这个电路称为R-S触发器,是最简单的一种触发器。S输入用于置位,R输入用于复位。这个电路的真值表如图所示:
在这里插入图片描述
R-S触发器的简化符号如图所示:
在这里插入图片描述

电平触发的D型触发器

我们需要一个保存某一特定点上的信号,为此,我们必须保证在这个时间点后电路不随输入端的变化而变化。
构思一下这个电路的抽象逻辑,该电路由一个数据端和一个保持位,当保持位置1时,电路保存数据端的输入;反之置0时,电路输出固定。由此可以写出该电路的真值表:
在这里插入图片描述
下图是在R-S基础上构造的能达到目的的电路,通过与门,置0的保持位能阻碍两个输入到达电路。
在这里插入图片描述
接下来,回想R-S触发器的真值表。R输入端和S输入端至多有一个可以置为1,而且输入全0的情况可以通过保持位维持。因此可以想到下图的电路。
在这里插入图片描述

这个电路称为电平触发的D型锁存器(1位存储器)。当保持位是一个特定电平(本图中为1)时,触发器才保存信息。保持位一般被称为时钟,它只是什么时候保存数据。
在这里插入图片描述
请添加图片描述
我是霜_哀,在算法之路上努力前行的一位萌新,感谢你的阅读!如果觉得好的话,可以关注一下,我会在将来带来更多更全面的知识讲解!

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

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

相关文章

Haproxy搭建Web群集

Haproxy 支持四层和七层反向代理 LVS 支持四层反向代理 目前常见的Web集群调度器分为软件和硬件软件通常使用开源的LVS、Haproxy、Nginx硬件一般使用比较多的是F5,也有很多人使用国内的一些产品,如梭子鱼、绿盟等;云 SLB CLB Haproxy应用分析…

配置Docker镜像加速器-Docker命令-Docker 容器的数据卷

Docker架构 docker进程(daemon) 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件…

OpenJudge - 39:多项式输出

目录 一、题目描述 二、代码实现 一、题目描述 一元 n 次多项式可用如下的表达式表示: ​ 其中,​ 称为 i 次项,​ 称为 i 次项的系数。给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该多项式&#xff…

如何在本地搭建Maven环境并整合进IDEA中?【2023最新版】

编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 Maven版本:apache-maven-3.6.3 目录 一. 为什么要使用Maven?1.1 获取jar包1.2 添加jar包1.3 使用Maven便于解决jar包冲突及依赖问题 二. 什么是Maven?三. 如何…

排序算法 - 选择排序(Selection sort)

文章目录 选择排序介绍选择排序实现选择排序的时间复杂度和稳定性选择排序时间复杂度选择排序稳定性 代码实现核心&总结 每日一道算法,提高脑力。第四天,选择排序。 选择排序介绍 它的基本思想是: 首先在未排序的数列中找到最小(or最大)元素&#…

Three.js--》理解光源对物体产生影响的重要性

上篇文章 前端开发者掌握3d技术不再是梦,初识threejs 作为three.js入门篇讲解了许多内容但是没有深入了解其原理以及实现方法,仅仅只是展示了实现的内容及代码,本篇文章将深入讲解实现效果其背后用到的知识与原理。 目录 使用相机控件轨道控…

博途PID编程应用(状态机)

博途工艺PID的详细解读可以查看下面的博客文章,这里不再赘述 博途PLC 1200/1500PLC 工艺对象PID PID_Compact详细解读_RXXW_Dor的博客-CSDN博客这篇博文我们详细解读博途PLC自带的PID功能块PID_Compact,大部分工业闭环调节过程,我们采用系统自带的PID功能块基本都能胜任,一…

接收来自客户端的参数使用【JSR303校验框架】进行校验参数是否合法

目录 1:JSR303校验 1.1:统一校验的需求 1.2:统一校验实现 1.3:分组校验 1.4:校验规则不满足? 1:JSR303校验 1.1:统一校验的需求 前端请求后端接口传输参数,是在co…

CTFShow-Web篇详细wp(持续更新中ing)

CTFShow-Web篇详细wp web签到题web2web3web4web5web6web7web8 CTFShow 平台:https://ctf.show/ web签到题 直接F12然后Base64解码 ctfshow{19bdf375-f974-481e-8c62-0f4c3d170fb4} web2 考点:联合查询 先尝试使用万能密码登入 ‘ or 11# 登入成功&am…

搭建家庭影音媒体中心 --公网远程连接Jellyfin流媒体服务器

文章目录 前言1. 安装Home Assistant2. 配置Home Assistant3. 安装cpolar内网穿透3.1 windows系统3.2 Linux系统3.3 macOS系统 4. 映射Home Assistant端口5. 公网访问Home Assistant6. 固定公网地址6.1 保留一个固定二级子域名6.2 配置固定二级子域名 转载自远程穿透的文章&…

dig命令理解DNS域名解析中的A记录,AAAA记录,CNAME记录,MX记录,NS记录,/etc/hosts本地域名IP映射

参考博文:https://blog.csdn.net/zxl1990_ok/article/details/125432123 目录 参考资料DNS简介/etc/hosts本地域名IP映射查询过程举例直接显示DNS寻址结果向特定DNS服务器寻址查询A记录查询AAAA记录CNAME记录MX记录NS记录PTR记录SOA记录查看DNS服务器的主从关系 参考…

外网SSH远程连接linux服务器,看这一篇就够了

文章目录 视频教程1. Linux CentOS安装cpolar2. 创建TCP隧道3. 随机地址公网远程连接4. 固定TCP地址5. 使用固定公网TCP地址SSH远程 转载自内网穿透工具的文章:无公网IP,SSH远程连接Linux CentOS服务器【内网穿透】 本次教程我们来实现如何在外公网环境下…

【SWAT水文模型】SWAT水文模型建立及应用第二期:土地利用数据的准备

SWAT水文模型建立及应用:土地利用数据的准备 1 简介2 土地利用数据的下载2.1 数据下载方式2.1.1 中科院1km土地利用数据2.1.2 清华大学高精度土地利用数据 2.2 数据下载 3 土地利用数据的准备3.1 矢量转栅格3.2 土地利用类型的重分类3.3 土地利用分布图投影调整3.4 …

数据库系统-并发控制

文章目录 一、为什么要并发控制1.2 并发控制解决的问题1.2.1 脏读1.2.2 幻读1.2.3 不可重复读1.2.4 数据丢失问题 二、事务调度及可串行性2.1 事务2.1.1 事务的宏观2.1.2 事务的微观2.1.3 事务的特性 ACID 2.2 事务调度与可串行性2.3 冲突可串行化判定 三、基于封锁的并发控制方…

DNS基础:通过dig命令理解DNS域名解析中的A记录,AAAA记录,CNAME记录,MX记录,NS记录,/etc/hosts本地域名IP映射

参考博文:https://blog.csdn.net/zxl1990_ok/article/details/125432123 目录 参考资料DNS简介/etc/hosts本地域名IP映射查询过程举例直接显示DNS寻址结果向特定DNS服务器寻址查询A记录查询AAAA记录CNAME记录MX记录NS记录PTR记录SOA记录查看DNS服务器的主从关系 参考…

博途PID1200/1500PLC编程应用(SCL状态机编程)

博途工艺PID的详细解读可以查看下面的博客文章,这里不再赘述 博途PLC 1200/1500PLC 工艺对象PID PID_Compact详细解读_RXXW_Dor的博客-CSDN博客这篇博文我们详细解读博途PLC自带的PID功能块PID_Compact,大部分工业闭环调节过程,我们采用系统自带的PID功能块基本都能胜任,一…

【Linux】第八讲:Linux进程信号详解(一)_ 认识信号 | 产生信号

「前言」文章是关于Linux进程信号方面的知识,本文的内容是Linux进程信号第一讲,讲解会比较细,下面开始! 「归属专栏」Linux系统编程 「笔者」枫叶先生(fy) 「座右铭」前行路上修真我 「枫叶先生有点文青病」 「每篇一句」 人生天…

【Ambari】开启HDFS 的HA架构

之前搭建的Ambari可以查看之前的博客 接下来我们来看下HDFS 开启HA 开启HDFS 的HA架构 选择启动NN的HA 因为之前是3节点的所以一开始安装的时候 Ambari架构选择了让安装一个NameNode和一个SecendryNameNode。 点击启动NameNode HA 后跳出个界面 填写集群名 类似于之前第…

六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序

文章目录: 1. 插入排序2.希尔排序3.选择排序4.冒泡排序5.堆排序6.快速排序5.1 hoare版本(左右指针法)5.2 挖坑法5.2.1 递归5.2.2 非递归 5.3 前后指针法 1. 插入排序 步骤: 1.从第一个元素开始,该元素可以认为已经被排序 2.取下一个元素tem…

【社区图书馆】Spring Boot 3核心技术与最佳实践

文章目录 前言什么是Spring BootSpring Boot特性Spring Boot优缺点Spring Boot核心功能 记录和随想 前言 提示:这里可以添加本文要记录的大概内容: 提示:以下是本篇文章正文内容,下面案例可供参考 什么是Spring Boot 使用Sprin…