加法运算(补码)、减法运算(补码)、乘法运算(原码、补码),补充:与、或、非、异或、加法运算(异或、与、或)

加法运算(补码)、减法运算(补码)、乘法运算(原码、补码),补充:与、或、非、异或、加法运算(异或、与、或)加法运算 补码 减法运算 补码 乘法运算 原码 补码 与运算 或运算 非运算 异或运算 加法运算 异或 与 或 补码加法

大家好,欢迎来到IT知识分享网。

在加减乘除运算中,使用原码进行运算的电路实现太难,多采用补码来进行加减乘除。

补码:正数的补码与原码一样。负数的补码是原码符号位不变,数值位全部取反,再加1。

例如: 108 -108

原码

(最高位即最左一位是符号位。

正数的符号位:0。

负数的符号位:1。)

0 110 1100 1 110 1100

反码

(正数的反码:同原码。

负数的反码:原码符号位不变,数值位全部取反)

0 110 1100 1 001 0011

补码

(正数的补码:同原码。

负数的补码:反码+1)

0 110 1100 1 001 0100

(补码)加法运算

二进制逢2进1,符号位参与加法运算。

补码的加法运算结果仍是补码,需转为原码。(正数:原码=补码。负数:符号位不变,数值位全部取反,再+1)

加法运算(补码)、减法运算(补码)、乘法运算(原码、补码),补充:与、或、非、异或、加法运算(异或、与、或)

加法运算可能溢出

正数与正数相加,可能溢出;负数与负数相加,可能溢出。

例如:8位二进制,其中1位符号位,数值最大127。108+30=138>127,溢出。

 加法运算(补码)、减法运算(补码)、乘法运算(原码、补码),补充:与、或、非、异或、加法运算(异或、与、或)

判断是否溢出

方法一:一位符号位。通过将结果的符号位与原来两个符号位比对(与或非)。

若判断结果为0,没有溢出;若结果为1,则溢出。

加法运算(补码)、减法运算(补码)、乘法运算(原码、补码),补充:与、或、非、异或、加法运算(异或、与、或)

方法二:一位符号位。符号位进位Cs与数值位最高位进位C1比对(异或)。

加法运算(补码)、减法运算(补码)、乘法运算(原码、补码),补充:与、或、非、异或、加法运算(异或、与、或)

 方法三:双符号位。结果的两个符号位比对(异或)。

注:实际存储时,只有一个符号位。运算时,复制一个符号位。

加法运算(补码)、减法运算(补码)、乘法运算(原码、补码),补充:与、或、非、异或、加法运算(异或、与、或)

 如何解决溢出(位宽扩大,也有称为:符号扩展)

正数

原码、反码、补码一样,扩宽方式也一样。

 正整数:符号位与数值位中间扩宽,补0。正小数:数值位低位后面扩宽,补0。

加法运算(补码)、减法运算(补码)、乘法运算(原码、补码),补充:与、或、非、异或、加法运算(异或、与、或)

负数

负整数:原码:符号位与数值位中间扩宽,补0。

               反码:符号位与数值位中间扩宽,补1。

               补码:符号位与数值位中间扩宽,补1。

负小数:原码:数值位低位后面扩宽,补0。

               反码:数值位低位后面扩宽,补1。

               补码:数值位低位后面扩宽,补0。

加法运算(补码)、减法运算(补码)、乘法运算(原码、补码),补充:与、或、非、异或、加法运算(异或、与、或)

(补码)减法运算

A-B相当于A+(-B),转为加法运算。

既是加法运算,就可能溢出(例如:108-(-30)相当于108+30),判断溢出与解决上面已说明。

加法运算(补码)、减法运算(补码)、乘法运算(原码、补码),补充:与、或、非、异或、加法运算(异或、与、或)

(原码)乘法运算

相当于多次加法运算。涉及:加法(原码)、逻辑右移、异或。

(原码)乘法运算的符号位:(异或)

符号位不参与运算。最终结果的符号位:被乘数和乘数的符号位异或。

(原码)乘法运算初始:

ACC(累加寄存器):0000 0000,

MQ(乘商寄存器):乘数绝对值,

X(通用寄存器):被乘数绝对值。

(原码)乘法运算过程:(加法、逻辑右移)

第一步、MQ(乘商寄存器)的低位若为1,ACC(累加寄存器)中的值加上X(通用寄存器)中的值;若MQ的低位为0,ACC中的值加上0。

第二步、ACC中的值和MQ中的值一起逻辑右移(低位舍弃,高位补0)。

第三步、重复第一步、第二步。

第四步、修正符号位(ACC中)。

(原码)乘法运算最终结果:

ACC(符号位,乘积的高位),MQ(乘积的低位)。

加法运算(补码)、减法运算(补码)、乘法运算(原码、补码),补充:与、或、非、异或、加法运算(异或、与、或)

 

(补码)乘法运算

相当于多次加法运算。涉及:加法(补码)、算术右移。

ACC和X中使用双符号。MQ中低位后面有一位辅助位。

(补码)乘法运算的符号位:

被乘数和乘数的符号位参与运算。且双符号位(存储时是1位符号位,运算时复制符号位)。

(补码)乘法运算初始:

ACC(累加寄存器):00 000 0000,

MQ(乘商寄存器):乘数补码,低位后面有一位辅助位0,

X(通用寄存器):被乘数补码,双符号。

(补码)乘法运算过程:(加法-补码、算术右移)

第一步、MQ(乘商寄存器)的辅助位减数值位低位,若为1,ACC(累加寄存器)中的值加上被乘数的补码;若为0,ACC中的值加上0;若为-1,ACC中的值加上被乘数相反数的补码。

第二步、ACC中的值和MQ中的值一起算术右移(低位舍弃,符号位为0,高位补0,符号位为1,高位补1)。

第三步、重复第一步、第二步。

第四步、多做第一步的加法(符号位参与运算)。

(补码)乘法运算最终结果(仍是补码):

ACC(符号位,乘积的高位),MQ(乘积的低位)。

加法运算(补码)、减法运算(补码)、乘法运算(原码、补码),补充:与、或、非、异或、加法运算(异或、与、或)

 

补充

0:假。1:真。

与运算

与运算中,都为1(真),结果才为1(真),其余情况结果均为0(假)。

与运算
条件1 条件2 结果
0 0 0
0 1 0
1 0 0
1 1 1
或运算

或运算中,都为0(假),结果才为0(假),其余情况结果均为1(真)。

或运算
条件1 条件2 结果
0 0 0
0 1 1
1 0 1
1 1 1
非运算

非运算中,相当于取反,为0(假)则结果为1(真),为1(真)则结果为0(假)。

非运算
条件 结果
0 1
1 0
异或运算

异或运算中,相同,结果为0(假);不同,结果为1(真)。

可理解为:判断是否仅有一个为1(真)。

异或运算
条件1 条件2 结果 
0 0 0
0 1 1
1 0 1
1 1 0

异或运算(可用与、或、非实现)

加法运算(补码)、减法运算(补码)、乘法运算(原码、补码),补充:与、或、非、异或、加法运算(异或、与、或)

 加法运算(异或、与、或)

本位和:两个本位跟低位进位的异或。可理解为:3者中偶数个1则结果为0,否则为1。

进位:两种情况满足一个即可。1、两个本位都为1则进位(即两个本位进行与运算结果为1)。2、两个本位只有一个1,且低位进位为1,则进位,(即两个本位异或运算结果为1,然后和低位进位进行与运算结果为1)

加法运算(补码)、减法运算(补码)、乘法运算(原码、补码),补充:与、或、非、异或、加法运算(异或、与、或)

 

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/127778.html

(0)
上一篇 2025-09-05 13:33
下一篇 2025-09-05 13:45

相关推荐

发表回复

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

关注微信