408第二季 - 组成原理 - 标志器和加法器
闲聊
认识一下部件
这是多路选择器
然后各种标志记一下:
理解简单小图
无符号数加法
Y上面一个杠是取反的意思
然后举下面的例子
这里我们整加法,所以Sub = 0,多路选择器会选择0
这里sub传给了Cin 所以Cin也是0
然后最低位会传入一个0
画圈圈的1是Cout,是最高位的进位,所以Cout 是1
然后根据书上的公式
CF = 1 有进位,表示溢出
OF = 0,无符号数的OF无意义,想要判断有没有溢出还得看CF,0人在意OF
有符号数加法
过程和结果和无符号数一模一样啊
但判断溢出得看OF了
所以结论是 无符号数看CF , 有符号数看OF
无符号数减法
多路选择器会选择1
X + Y 会变成 X + Y(取反)
就是这样
别忘了低位还有个Cin
算出来就是:
然后把标志算一下
然后无符号数只要看CF就行了
先按照人类的视角看一下减的数是 5-14 可以看见根本不够减,所以,CF=1 说明有借位
有符号数减法
过程和结果与上面的一样
OF是0 没有溢出
然后还要极速版,简单看看
题目
1
然后算出结果
a
然后下面是快速的做法
这里 把他们的真值给整出来
一眼就能看出没有溢出 OF = 0
然后 R1 > R2 ,也不会有借位,所以 CF = 0
2
Y 比 X 大啊 , 有借位的, CF = 1
X - Y 怎么也不可能超出伟大的int类型的范围的 OF = 0
然后题目莫名其妙告诉你了
10 - (-20) 是不会溢出的 所以OF = 0
然后我们着重说一下 CF
这里我们比的大小是看无符号数的机器数的
所以 10 是正数 开头是 0 ,-20是负数 开头是 1
所以这里是 小 - 大 并不是 大 - 小 要注意
CF = 1
原始人方法
先把-20的补码算出来,当然高手都是直接 1*16 + 4 走起的
然后套公式
然后算出来
b