一. 移位运算
1.移位运算时为了乘除法做准备
2.移位的机器用语:移位移动的是数,小数点不动
3.移位的规则
(1)逻辑移位:无符号数
逻辑左移和逻辑右移,移出的空位都用0来补
(2)算术移位:有符号数
难点:负数移位后补码:
1.首先清楚补码的定义:负数的补码等于它的原码自低位到高位遇到的第一个”1”的位置为a, a的右边的0保持不变,a的左边数值位全部取反,符号不变
2.根据定义解决负数移位后补码添加代码
(1)如果左移,那么原码最低位添加0,补码跟原码保持一致,也应该添加0
(2)如果右移,那么原码最高位添加0,补码跟原码保持一致,添加0的取反
二. 加法运算
1.加法运算时补码的运算
整数的模为2n+1(n为总的位数=数值位+符号位)
小数的模为2m (m为符号位数)
2.练习
三. 减法运算
1.减法运算方式
整数的模为2n+1(n为总的位数=数值位+符号位)
小数的模为2m(m为符号位数)
2.练习
四. 加减法溢出
1.小数补码溢出
小数的补码范围为-1~+(1-2-n)
x+y>1,超出补码表示的范围,算出来的结果是错误的
2.整数补码溢出
整数的补码范围为 -2n ~ +(2n-1) n为数值位
A-B=138<-128,超出补码表示的范围,算出来的结果是错误的
五. 溢出判断
1. 溢出:运算的结果超出机器数(补码)的表示范围
(1) 两个异号数相加或者两个同号数相减,不会发生溢出
(2) 两个同号数相加或者两个异号数相减,有可能发生溢出
2. 一位符号位判断溢出:参加操作的两个数(减法时即为被减数和”求补”以后的减数)符号位相同,运算后的结果的符号与原操作数的符号不同,即为溢出
3. 双符号位
六. 乘法运算过程
- 分析笔算乘法与计算机处理乘法
- 笔算乘法的改进(改进成计算机可以运算的方式)
(1)运算中的展示
(2)乘法运算过程(寄存器中存储的数据)
运算过程中,乘法运算的结果逐渐占领乘数部分寄存器
- 原码一位乘法(一次只乘一位)
练习:(-14/16) * (-13/16)
- 补码校正法
(1)补码一位乘法运算的规则
(2)被乘数符号任意,乘数符号为正
推理:
1 当被乘数为正,x和y的补码跟原码一样,跟原码一位乘一样([X]原[Y]原=[XY]原)
2 当被乘数为负
结论:当乘数符号为正,[X]补*[Y] 补=[X*Y]补,和原码相乘一样,但是加法和移位按照补码的规则来运算
(3) 被乘数符号任意,乘数符号为负
推理:
结论:当乘数符号为负,乘数[y]补,去掉符号位,操作同(乘数符号为正),最后结果加[-X]补,校正
(4)练习 -0.10110.1101
(5)练习 0.1101(-0.1011)
5. 补码比较法
(1)推导过程
(2)练习