13 | 加法器:如何像搭乐高一样搭电路(上)?
13 | 加法器:如何像搭乐高一样搭电路(上)?
讲述:徐文浩
时长09:48大小8.96M
异或门和半加器
全加器
总结延伸
补充阅读
课后思考
赞 51
提建议
精选留言(60)
- 不记年2019-05-27基本电路>门电路>全加器>加法器,经历了三层的封装,分层可以带来很多好处,但经过这么多层的封装是不是也带来了性能的损耗,所以我想对于像加法器这样经常用到的电路,可不可以打破分层,直接通过最底层的电路来实现,以达到性能的最优呢。在进一步,性能和封装之间是否也存在着取舍呢
作者回复: 不记年同学你好, 你的思考很对,实际的加法器,并不是由全加器串联组成的,在14讲里面我们可以看到为了减少门延迟的损失,实际高位的计算结果直接来自低位的组合电路里面的输入。 封装意味着我们提供了更多的“简单电路”或者说“简单指令”来操作。但这也意味着同样复杂的操作需要更多条指令。 这个也是为什么在计算机体系结构里面会有 RISC 和 CISC 这样的复杂/精简 指令之争。
共 4 条评论61 - 张立昊Leon2019-05-26负数用补码表示的话加法就和正数的加法没什么区别了,只是结果如果是负数的话,也是补码。发生溢出会有问题,最高位符号有可能会变,需要额外的标记位
作者回复: 👍
共 4 条评论43 - DreamItPossible2019-08-13使用全加器可以实现使用补码表示的有符号数,正数加负数转换成正数加上这个负数的补码即可。 如何检测溢出? 首先,列举下两个有符号数相加产生溢出的条件: - 正数+正数 如果结果为负数,则产生了溢出; - 负数+负数 如果结果为正数,则产生了溢出; - 正数-负数 如果结果为负数,则产生了溢出; - 负数-正数 如果结果为正数,则产生了溢出; 其次,可以根据最高数值位是否产生进位,以及符号位是否产生进位来判断是否有溢出发生,对应上面的四种情况就是: - 正数+正数有溢出,即最高数值位产生了进位,而符号位没有进位; - 负数+负数有溢出,即最高数值位没有产生进位,而符号位产生了进位; - 正数-负数有溢出,即最高数值位产生了进位,而符号位没有进位; - 负数-正数有溢出,即最高数值位没有产生进位,而符号位产生了进位;展开15
- kdb_reboot2019-05-26这部分就是本科学的数电了
作者回复: 👍
14 - 一步2019-05-24我们仍然是从左到右,一位一位进行计算,只是把从逢 10 进 1 变成逢 2 进 1。 这里不应该是从右往左运算吗?
作者回复: 一步同学你好, 谢谢指出,的确是从右到左计算,我修改一下。
14 - Knight²º¹⁸2019-05-24解答了我多年的疑惑7
- 南山2019-05-24打卡,5月24日03:45,坚持完整的学到底~
作者回复: 加油
7 - 小文同学2020-10-21https://www.bilibili.com/video/BV1G4411r7FX?from=search&seid=6252132967631213380 贴一个 B 站关于加法器的制作视频,肉眼可见的搭建一个加法器。7
- 玉琢天窗2019-09-11老师,要想自己搭建一个电路实现1+1,需要哪些材料呢
作者回复: 如果是写程序模拟的话有很多办法,比如有人用Minecraft 做了一个虚拟的CPU http://mc.163.com/2017/04/07/25535_682214.html 如果是硬件,如果只是为了体验,最简单的办法是用电路绘画导电笔直接在纸上画了来体验一下 或者也可以去淘宝上买个组合电路套件自己来搭一下。
共 3 条评论6 - supermouse2019-05-26老师您好!请问「与非门」、「或非门」是将「与门」、「或门」计算得到的结果取反吗?
作者回复: 是的,就是把与门和或门的真值表取反
6 - 活的潇洒2019-05-24今天提前一个半小时到单位,就是为了早点听音频做笔记,坚持完整的学到底,坚持完整的笔记到底 day13 学习笔记:https://www.cnblogs.com/luoahong/p/10916066.html6
- 俊釆2019-06-04全加器图中没有U,这个是其他地方的进位信号?共 1 条评论5
- ldd2019-05-27课后思考: 补码表示下,加法器也是可以正常运行的;因为补码的发明就是为了方便正负数的二进制计算。 正数+负数是不会溢出的,所以加法器可以直接忽略最左边的进位; 但是补码计算,还是会出现溢出的情况的,比如:假设二进制位数是4位,-8-2=6;7+2=-1 就算是溢出了; 那么还是需要最右边的输出来判断是否溢出的: 假设最右边的输入为a、b,输出为c,那么溢出位可以为 (~(a&b)) & c & (~(a&b)),输出为1,就代表溢出了,否则就是未溢出。 不知道思考的对不对,有不对的地方,望老师指出。展开
作者回复: 我不知道我有没有准确理解你的意思 两个负数相加,是否溢出,其实不是看最后多出来的进位的信号。而是也要看计算结果的最高位是1还是0 如果两个输入的高位是1而输出的高位是0,那么就溢出了,如果输出的高位还是1就没有溢出。 你这里的a,b,c是不是指输入a,b和输出c的左侧的高位(不是进位的溢出位)?我的理解没有错吧?
共 2 条评论5 - 小海海2019-05-24思考题: 反向推导,补码的设计本来就是要解决正数加负数的问题,使之可以当作普通的加法来进位即可,所以文章里的加法器模型应该是可以的
作者回复: 回答正确,不过可以再想想补码情况下,如何处理溢出呢?
4 - 铁皮2019-05-24课后思考题: 用补码表示的话,这个加法器应该可以实现正数加负数。 最左端如有溢出位的情况去掉就可以
作者回复: 是的,不过可以思考一下两个负数的相加或者整数的相加是否也会溢出?怎么通过电路来告诉大家是发生了溢出?
4 - 小文同学2020-10-21https://logic.ly/ 加法器还是比较简单的,同学们可以在这里入口出进行试验,大概花20min就可以从熟悉都实现了4
- cc2019-05-24我们把两个半加器的进位输出,作为一个或门的输入连接起来,只要两次加法中任何一次需要进位,那么在二位上,我们就会向左侧的四位进一位。 老师,这块没看懂。为什么任何一次需要进位,我们都要向四位进位呢?比如两个数分别是01和01,这样其实不用向四位进位的
作者回复: cc同学你好 的确不是每个计算都需要进位,但是我们的电路必须准备好可能发生进位。 而进位的时候,可能来自当前位两个1的相加会发生进位。 但还有一种可能,就是当前位只有一个1,但是从更低位又进位来了一个1,这样也需要向高位进行进位。
3 - 。2021-12-03好想穿越回去告诉20岁的自己,模电数电好好学啊,要不然以后一把年纪了还要补课啊2
- 拯救地球好累2019-10-26---总结--- 封装及模块化:计算机硬件或软件设计中,为了能提高可重用性和为上层开发人员屏蔽下层细节,往往会提供包装好的模块并划分一定的层次。但通用系统的效率往往会低于专用系统,因此在提高开发效率的同时往往也会有一定的性能损失,在其他层面无法取得性能优化的突破且有性能方面的需求时,可以从该方面考虑。 最简单的门电路:与门、或门、非门、异或门、与非门、或非门 半加器:异或门(做加法)+与门(判进位) 全加器:两个半加器(结合进位信号做加法)+或门(产生进位信号)展开2
- X2022-08-04 来自上海终于搞懂了半加器、全加器了,哈哈哈,好开心啊1