补码的加减运算器

补码的加减运算器加法器的原理注意 Cin 要加到 a 和 b 的最低位 Cout 是 A 和 B 相加之后 向更高位产生的一个进位信息补码的加减运算由于此时实现的是减法 所以 sub 的这根线也会控制 Cin 使 Cin 的值为 1X 8Y 7 无符号数的减法运算标志位的生成 OF 这个标志位只在有符号数的加减运算中才有意义 OF 的例子 SF 的确定 SF 最高位的本位和对无符号数没有意义 因为无符号数没有正负之说 ZF 对有符号 and 无符号都有意义 CF 只对无符号数的加减法有意义 CF Cout 异或

加法器的原理

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

补码的加减运算

在这里插入图片描述

由于此时实现的是减法,所以sub的这根线也会控制Cin使Cin的值为1

在这里插入图片描述
在这里插入图片描述

无符号数的减法运算

在这里插入图片描述
在这里插入图片描述

标志位的生成

在这里插入图片描述

在这里插入图片描述

ZF对有符号and无符号都有意义

CF只对无符号数的加减法有意义
CF=Cout异或Sub,当然其实也是Cout异或Cin
在这里插入图片描述

判断溢出(无:CF 有:OF)

其他

在这里插入图片描述

无符号乘法电路基本结构(前n比特全为0)

在这里插入图片描述

在这里插入图片描述

  1. 控制逻辑检查到最后一位是1,那么接下来前面绿色的部分需要加上被乘数1101
  2. 起始,绿色部分为0000,然后进行一次加法之后,
  3. 控制逻辑发出一个写使能的信息,将结果写入到绿色部分
  4. 1101+0000往最高位的进位应该是0,也就是C=0
  5. 完成一次加法之后,所有的比特全部右移一位,刚才的进位信息C的值会移到最高位,同时舍去最低位。(右移是为了实现错位相加)
  6. 此时计数器应该减1(计数器的初值=被乘数or乘数的位数)

在这里插入图片描述

有符号数的乘法(前n+1位全0or全1)

  1. 不需要记录加法产生的进位,也就是说不需要C这个寄存器,因为有符号数中最高位通常是符号位,不会把他看做是进位
  2. 需要增加一个辅助位,设置为0

在这里插入图片描述

  1. 辅助位刚开始设置为0,Cn的值为4
  2. 每一轮的处理都要看辅助位和乘数Y的最末一位
  3. 0-1=-1,所以用P-X也就是P+(-X)的补码
  4. 0000-1101,减法他在底层是用加法实现的,也就是0000+0011=0011
  5. 把加得的结果写入P
  6. 把所有位算术右移,空出来的位置用原来的符号位(也就是P的最高位)填充
  7. 之后,计数器Cn的值减1,变为3

判断溢出(用10进制算更加方便)

在这里插入图片描述

有符号数:前n+1位全0or全1则不溢出

补码一位乘

在这里插入图片描述

  1. 补码一位乘中,我们使用了双符号的运算方式,所以在n轮的加法和移位之后,确实还需要多一次加法
  2. 上面的乘法使用的是单符号位的补码进行运算

除法电路的基本结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述





版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/178745.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午4:35
下一篇 2026年3月26日 下午4:35


相关推荐

  • C语言学生成绩管理系统(设计报告和全部源码)「建议收藏」

    C语言学生成绩管理系统(设计报告和全部源码)「建议收藏」实现如下功能:1)能够实现学生成绩信息的插入、删除和修改;2)能够实现各种查询(分别根据学生学号、姓名、课程名称等);3)能够实现按照考试成绩、总评成绩进行排序;4)能够查询某门课程的最高分、最低分并输出相应学生信息;5)能够查询某门课程的优秀率(90分及以上)、不及格率;学生成绩管理系统设计与实现1)系统功能模块学生成绩管理系统主要功能是。。。。模块结构如“图1-1系统功能结构图”所示。图1-1系统功能结构图我是事先定义了:typedefstructNode{in

    2022年6月20日
    30
  • 会让程序员争论起来的几个话题

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 1、世界上最好的编程语言 这个话题是千年老梗,但只要论坛有小白提问总会引起争论。 A:Python 是最好的编程语言…

    2021年6月24日
    106
  • C语言 — void的用法解析[通俗易懂]

    C语言 — void的用法解析[通俗易懂]C语言-void的用法解析简介​ void中文翻译为”无类型”,有的也叫”空类型”。常用在程序中对定义函数的参数类型、返回值、函数中指针类型进行声明。用法​ void应用最广泛的就是跟指针结合,即void* //无类型指针,也称为空指针,可以指向任何类型的数据 //注意一点:当我们需要使用void类型的的指针变量区指向 某一类型的变量的时候,必须要对其进行类型转换​ 这里补充一点:因为我们在定义一个指针变量的时候第一件事就是指定我们指针变量所指向的变量的类型。一

    2022年5月19日
    105
  • python 使用 config 文件

    python 使用 config 文件在写程序时 我们经常需要定义一些路径常量 为了逻辑和代码的清晰 可以新建一个 config ini 文件 然后调用其中的信息即可 config ini 文件格式如下 section1 model dir home user nlp data trained model 注释 save input profiling inputsave state profiling s

    2026年3月16日
    1
  • 分布式系统常见问题总结[通俗易懂]

    分布式系统常见问题总结[通俗易懂]秒杀系统架构优化思路一、秒杀业务为什么难做1)im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息);2)微博系统,每个人读你关注的人的数据,一个人读多个人的数据;3)秒杀系统,库存只有一份,所有人会在集中的时间读和写这些数据,多个人读一个数据。例如:小米手机每周二的秒杀,可能手机只有1万部,但瞬时进入的流量可能是几百几千万。又例如:12306抢票,…

    2022年5月20日
    40
  • 50个多线程面试题,你会多少?(一)[通俗易懂]

    50个多线程面试题,你会多少?(一)[通俗易懂]下面是Java线程相关的热门面试题,你可以用它来好好准备面试。什么是线程? 什么是线程安全和线程不安全? 什么是自旋锁? 什么是Java内存模型? 什么是CAS? 什么是乐观锁和悲观锁? 什么是AQS? 什么是原子操作?在JavaConcurrencyAPI中有哪些原子类(atomicclasses)? 什么是Executors框架? 什么是阻塞队列?如何使用阻塞队列来…

    2022年5月2日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号