计算机组成原理——加减运算 & 溢出判断

简介: 计算机组成原理——加减运算 & 溢出判断

原码的加减运算


原码的加法运算:


  1. 正+正 → 绝对值做加法,结果为正 (可能会溢出)


  1. 负+负 → 绝对值做加法,结果为负 (可能会溢出)


  1. 正+负 → 绝对值大的减绝对值小的,符号同绝对值大的数


  1. 负+正 → 绝对值大的减绝对值小的,符号同绝对值大的数


原码的减法运算,“减数”符号取反,转变为加法:


  • 正-负 → 正+正


  • 负-正 → 负+负


  • 正-正 → 正+负


  • 负+正 → 负-负


补码的加减运算


对于补码来说,无论加法还是减法,最后都会转变成加法,由加法器实现运算,符号位也参与运算。


补充:


1. 求[-B]补


[-B]补 : [B]补连同符号位一起取反加1


2. 负数补 → 原:


①数值位取反+1;


②负数补码中,最右边的1及其右边同原码。最右边的1的左边同反码


例题


我们先看一道例题:设机器字长为8位(含1位符号位),A = 15,B = -24,求[A+B]补和[A−B]补


先将A B的原码补码都求出来



[A+B]补 = [A]补 + [B]补 = 0,0001111 + 1,1101000 = 1,1110111


原码:1,0001001 真值-9


[A-B]补 = [A]补 + [-B]补 = 0,0001111 + 0,0011000 = 0,0100111


真值+39


我们将题改一下:


其中 C = 124,求[A+C]补和[B−C]补,按照上面方法求出可得:


[A+C]补 = 0,0001111 + 0,1111100 = 1,0001011 真值-117 溢出(实际应该是139,但是溢出后是 -117)


[B−C]补 = 1,1101000 + 1,0000100 =0,1101100 真值+108


溢出判断


溢出条件


  • 只有“正数+正数 ”才会上溢 —— 正+正=负


  • 只有“负数+负数 ”才会下溢 —— 负+负=正


溢出判断:采用双符号位


正数符号为00,负数符号为11


[A+C]补 = 00,0001111 + 00,1111100 = 01,0001011 上溢


[B−C]补 = 11,1101000 + 11,0000100 = 10,1101100 下溢


记两个符号位为S1 S2 ,则V=S1异或S2


  • 若V=0,表示无溢出;


  • 若V=1,表示有溢出。


相关文章
|
5月前
|
C语言
【汇编语言实战】两个32位数的相加运算
【汇编语言实战】两个32位数的相加运算
43 2
|
12月前
计算机内部乘法除法实现
计算机内部乘法除法实现 乘法:先来个例子:7×5可以写成如下的二进制方式,7为乘数,5为被乘数。7×5=0111×0101那么规则就是,按照被乘数的低位到高位依次计算,如果第n位不为0,那么乘数就左移n位,如果第n为为0 ,那么这步运算结果记为0,最后将每一步的结果相加就是最终的计算结果。 除法:依然先来个例子:123/4写成二进制的形式如下,123为除数,4为被除数。123/4=1111...
74 0
计算机内部乘法除法实现
计算机加法器执行二进制加法的原理介绍
计算机加法器执行二进制加法的原理介绍
|
10月前
|
存储
【408计算机组成原理】—加减运算和溢出判断(八)
【408计算机组成原理】—加减运算和溢出判断(八)
|
5月前
|
存储
面试题:计算机内部如何存储负数和浮点数?
面试题:计算机内部如何存储负数和浮点数?
88 0
计算机组成原理——浮点数加减运算&强制类型转换
计算机组成原理——浮点数加减运算&强制类型转换
760 0
计算机组成原理——浮点数加减运算&强制类型转换
|
存储
计算机的运算方法
计算机的运算方法
212 0
为什么计算机要用补码的方式来表示负数?
在回答这个问题前,我们假设不用补码的方式来表示负数,而只是把最高位的符号标志位变为 1 表示负数,
121 0
为什么计算机要用补码的方式来表示负数?
408计算机组成原理学习笔记——浮点数的表示和运算
408计算机组成原理学习笔记——浮点数的表示和运算
822 1
408计算机组成原理学习笔记——浮点数的表示和运算
409计算机组成原理学习笔记——运算方法和运算电路(二)
409计算机组成原理学习笔记——运算方法和运算电路(二)
344 1
409计算机组成原理学习笔记——运算方法和运算电路(二)