信息的表示和处理(二)——运算电路基础


这部分内容比较简单,就是有几个符号不太好理解,与后续的控制指令关系密切,需要充分理解,最近状态不太好,希望慢慢调整回来,come back

数字逻辑电路基础

逻辑电路基础

基于0和1构造所有运算电路
⭐布尔代数:0/1代表逻辑值假/真

  • 将命题逻辑问题化为代数问题
  • 最基本的表示:与或非,真值表
    ⭐一位逻辑门电路
    在这里插入图片描述
    ⭐n位逻辑门电路(按位运算)
    在这里插入图片描述
    ⭐组合逻辑部件:
  • 组合逻辑电路/时序逻辑电路
  • 功能部件
    画出真值表→写出逻辑函数→确定电路组成
    ⭐多路选择器:一个输出端F,控制端S,两个输入端A/B
    在这里插入图片描述

无符号数加法器

一位加法器(全加器)

两个加数A/B,一个进位Cin,向高位进位cout,输出本位F
{cout,F}=A+B+cin;//这种表示按照verilog语法
当A/B/cin中有奇数个1时,F为1,当有两个以上1时,cout为1
在这里插入图片描述
在这里插入图片描述
fully add(FA)

n位加法器

  • n位无符号数加(无法判断溢出吧啦吧啦,就是简单的相加)

在这里插入图片描述
由n个全加器组成
所有的算术运算都基于全加器

  • n位带标志加法器
    想办法实现减法运算(判断溢出,取补码等等)
    利用标志信息表示比较运算等等其他运算
    [-y]补=~[y]补+1
    在这里插入图片描述
    在此基础上加入寄存器,移位器,控制逻辑,就能实现ALU,乘除运算和浮点运算

ALU(只含整数加减运算和逻辑运算)

无符号整数加减,带符号整数加减,与或非等逻辑运算
核心为带标志加法器
输出有结果和标志信息,有操作控制端决定执行功能。

c表达式和逻辑电路

  • c语言到逻辑电路的转换

高级语言→汇编语言:通过运算指令实现(媒介)
汇编语言→运算电路:对指令译码,根据指令译码结果控制电路实现。

  • c语言中的各类运算
    1 算术运算
    2 按位运算,由x的类型确定是逻辑移位还是算术移位
    判断溢出
    逻辑移位:高位移出为1,说明溢出
    算数移位:新的符号位与原符号位不同
    3 逻辑运算:区分与按位运算的符号区别
    4 截断和扩展

整数加减运算

加减标志信息

需要解决的问题:利用符号位实现整数的比较大小
加/减运算部件不考虑运算的信息是带符号还是无符号,结果是否正确,就是简单的机械运算。
标志位会在标志寄存器中存储,用于转移指令和控制指令等等。
ZF:零标志,判断位串是否全0,全0则ZF值为1
OF:判断是否溢出,若A/B’(已经进行补码处理)同号但与sum不同号,则溢出
解释:假设为4位带符号运算
全正:溢出后符号位必为1
全负:溢出后符号位必为0
若一正一负:不可能溢出(范围不允许)
SF:sum符号
CF:进位/借位符号(这真的是困扰了我很久)xor cout sub
解释:加法计算时:为0是说明没有进位
减法运算时:为1时说明产生借位,同号可以比较,异号不能直接通过CF判断大小

加减法溢出公式及举例

判断是否溢出:
带符号溢出判断:OF=1
无符号减溢出:CF=1(有借位),通过CF判断大小

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值