1、1 北京化工大学北方学院 主讲教师 白彦霞 E mail 163byx 数字电路与逻辑设计 2 二进制数的算术运算 在数字电路中 0和1既可以表示逻辑状态 又可以表示数量的大小 当表示数量时 可以进行算术运算 所以数字电路中普遍采用二进制算数运算 与十进制数的算术运算相比1 运算规则类似 2 进位和借位规则不同 逢二进一 借一当二 特点 加 减 乘 除全部可以用相加和移位这两种操作实现 简化了电路结构 3 一 无符号二进制数的算术运算 1 二进制数加法 运算规则 0 0 0 0 1 1 1 1 10 向高位进一 逢二进一 例 计算二进制数1010和0101的和 1010 0101 1 1 1
2、1 2 二进制数减法 运算规则 0 0 0 1 1 0 1 0 1 0 1 1 向高位借一 借一当二 4 例 计算二进制数1010和0101的差 1010 0101 1 0 1 0 注意 在无符号减法运算中无法表示负数 所以 被减数必须大于减数 3 二进制数乘法 由左移被乘数与加法运算构成 例 计算二进制数1010和0101的积 1010 0101 1010 0000 1010 0000 110010 5 4 二进制数除法 由右移被除数与减法运算构成 例 计算二进制数1010和111之商 1010 111 1 111 11 0 0 0 111 1 101 0 1 111 11 6 二 带符号二
3、进制数的减法运算 二进制数的正 负号也是用0 1表示的 最高位为符号位 0为正 1为负 例如 89 01011001 89 11011001 在数字电路中 为简化电路常将减法运算变为加法运算 故引入原码 反码 补码的概念 7 1 原码 反码 补码 1 原码 自然二进制码01101 13 D 2 反码 原码取反10010 18 D 3 补码 N补 2n N原 N反 1 二进制数的位数 25 13 D 19 D 01101 13 D 10010 13 反 13 补 10011 10010 1 13 反 1 8 2 二进制数的补码表示 补码或反码的最高位为符号位 正数为0 负数为1 当二进制数为正数
4、时 其补码 反码与原码相同 当二进制数为负数时 将原码的数值位逐位求反 然后在最低位加1得到补码 X1 85 1010101 X1 原 X1 反 X1 补 01010101X2 85 1010101 X2 原 11010101 X2 反 10101010 X2 补 X2 反 1 10101011 9 3 二进制补码的减法运算 减法运算的原理 减去一个正数相当于加上一个负数A B A B 对 B 求补码 然后进行加法运算 例 试用4位二进制补码计算5 2 所以5 2 3 解 5 2 补 5 补 2 补 0101 1110 0011 进位 注意 进行二进制补码加法运算时 被加数的补码和加数的补码的
5、位数要相等 运算结果多出的高位要舍掉 10 4 关于溢出 试用4位二进制补码计算5 7 解 因为 5 7 补 5 补 7 补 0101 0111 1100 表示 4 而显然 正确的结果应为12 为什么会发生错误 因为在4位二进制补码中 只有3位是数值位 即它所表示的范围为 8 7 而本例的结果需要4位数值位 12D 1100B 表示 因而产生溢出 解决溢出的办法 进行位扩展 1 11 溢出的判别 两个符号相反的数相加不会产生溢出 但两个符号相同的数相加可能产生溢出 4位二进制补码表示的范围为 8 7 所以 a b 无溢出 c d 的运算结果应分别为 8和 9 均超过了允许范围 当方框中的进位位与和数的符号位 即b3位 相反时 则运算结果是错误的 产生溢出 12 end 无符号二进制数的算术运算 加 减 乘 除带符号二进制数的减法运算原码 反码 补码二进制数的补码表示二进制补码的减法运算溢出 13 谢谢 敬请各位老师批评指正