计算机组成原理 day03 原码补码等运算

 8.9 移位运算

8.9.1 移位运算的分类

计算机组成原理 day03 原码补码等运算_第1张图片

 8.9.2 算数移位

移位:通过改变各个数码位和小数点的相对位置,从而改变各数码位的位权。

计算机组成原理 day03 原码补码等运算_第2张图片

8.9.3 原码的算数移位

原码 -- 符号位不变,数值位移位

右移:高位补0,低位舍弃。若舍弃位不是0,会丢失精度

左移:低位补0,高位舍弃。若舍弃位不为0,会严重误差

计算机组成原理 day03 原码补码等运算_第3张图片

 计算机组成原理 day03 原码补码等运算_第4张图片

 

8.9.4 反码的算数移位

正数的反码与原码一致

负数的反码移位运算:

        1. 右移:高位补1,低位舍弃

        2. 左移:低位补1,高位舍弃 

计算机组成原理 day03 原码补码等运算_第5张图片

8.9.5 补码的算数移位

 正数的补码与原码一致

负数的补码:

        1.右移:高位补1,低位舍弃

        2. 左移:低位补0,高位舍弃

计算机组成原理 day03 原码补码等运算_第6张图片

8.9.6 算数移位的总结

位数有限,无法精确表示乘除法

计算机组成原理 day03 原码补码等运算_第7张图片

8.9.7 算数移位的应用

像X7这样的数可以分解为 X(2^0+2^1+2^2)

计算机组成原理 day03 原码补码等运算_第8张图片

 8.9.8  逻辑移位

逻辑右移:高位补0,低位舍弃

逻辑左移:低位补0,高位舍弃

看作无符号位的算数移位

计算机组成原理 day03 原码补码等运算_第9张图片

8.9.9 逻辑移位的应用

计算机组成原理 day03 原码补码等运算_第10张图片

 8.9.10 循环移位

不带进位位:用移出的位补上空缺

带进位位:移出的位放到进位位,原进位位补上空缺

计算机组成原理 day03 原码补码等运算_第11张图片

8.10 加法运算和溢出判断

8.10.1 原码的加减法

加法器直接对原码加法运算,可能会出错。

计算机组成原理 day03 原码补码等运算_第12张图片

8.10.2 补码的加减法

 补码的加减法,最终都变成加法,由加法器实现运算,符号位也参与运算

计算机组成原理 day03 原码补码等运算_第13张图片

8.10.3 溢出判断

如何判断上溢和下溢? 

计算机组成原理 day03 原码补码等运算_第14张图片

硬件判断溢出的第一种方法:

计算机组成原理 day03 原码补码等运算_第15张图片

 硬件判断溢出的第二种方法

计算机组成原理 day03 原码补码等运算_第16张图片

第三种方法:采用双符号位 

计算机组成原理 day03 原码补码等运算_第17张图片

8.10.4 符号扩展

 定点整数:

        1. 正数        +0

        2. 负数        原码+0,反码补码+1

定点小数:

        1.正数        +0

        2.负数        原码补码+0,反码+1

计算机组成原理 day03 原码补码等运算_第18张图片

8.10.5 回顾

计算机组成原理 day03 原码补码等运算_第19张图片

8.11 原码的乘法计算

手算乘法的过程

计算机组成原理 day03 原码补码等运算_第20张图片

先加法再移位

逻辑右移,高位补0,低位舍弃

计算机组成原理 day03 原码补码等运算_第21张图片

 原码一位乘法(手算)

整数的乘法与小数的类似

计算机组成原理 day03 原码补码等运算_第22张图片

8.12 补码的乘法运算

补码与原码乘法的比较:

        1. 补码:n轮加法、移位、再多来一次加法

        2. 补码:加法加的数不一样(根据MQ中最低位、辅助位判定)

        3. 补码是算术右移

        4. 符号位参与运算

计算机组成原理 day03 原码补码等运算_第23张图片

所谓的辅助位,就是把MQ寄存器多扩展一位

计算机组成原理 day03 原码补码等运算_第24张图片

手算 补码乘法

        算术右移:符号位不动,数值位右移,正数右移补0,负数右移补1        

计算机组成原理 day03 原码补码等运算_第25张图片

8.13 原码的除法运算

8.13.1 运算器的基本组成

运算器:实现算术运算、逻辑运算

除法:

1. ACC:被除数、除数

2. MQ:商

3.X:除数

计算机组成原理 day03 原码补码等运算_第26张图片

8.13.2 恢复余数法

上商0/1,得到余数,余数末尾补0

默认上商1,如果不对再改为上商0,并恢复余数

计算机组成原理 day03 原码补码等运算_第27张图片

应该商0 

计算机组成原理 day03 原码补码等运算_第28张图片

手算:恢复余数法 

计算机组成原理 day03 原码补码等运算_第29张图片

8.13.3 加减交替法

若余数为负数,可直接商0,让余数左移1位再加上除数的绝对值。

若为正数商1,减去除数的绝对值

计算机组成原理 day03 原码补码等运算_第30张图片

只是被除数小于除数,计算机通过第一次计算的商确定,如果为1直接结束运算,机器无法表示这个定点数。

计算机组成原理 day03 原码补码等运算_第31张图片

8.14 补码除法

8.14.1 加减交替法

补码除法:

1. 符号位参与运算

2.采用双符号位

末尾恒置1

计算机组成原理 day03 原码补码等运算_第32张图片

8.15 除法运算回顾

计算机组成原理 day03 原码补码等运算_第33张图片

8.16 强制类型转换

C语言中定点整数是用“补码”存储的

计算机组成原理 day03 原码补码等运算_第34张图片

8.17 大小端模式

大端:便于人类阅读

小段:便于机器处理

计算机组成原理 day03 原码补码等运算_第35张图片

 边界对齐的存储方式

现代计算机通常是按字节编址即每个字节对应1个地址
通常也支持按字、按半字、按字节寻址
假设存储字长为32位,2则1个字=32bit,半字=16bit。 每次访存只能读/写1个字
 

字地址逻辑左移两位得到字节地址

计算机组成原理 day03 原码补码等运算_第36张图片

 边界不对齐的存储方式:

空间换时间

你可能感兴趣的:(计算机基础,java)