计算机组成原理-定点数的表示与运算
计算机组成原理-定点数的表示与运算 2021/8/14 22:57
定点数的表示与运算
定点数:小数点的位置固定
Eg:996.007 ——常规计数
浮点数:小数点的位置不固定
Eg:9.96007*102 ——科学计数法
定点数的表示
无符号数的表示
n位的无符号数表示范围为:0 ~ 2n -1
无符号数通常只有无符号整数,而没有无符号小数
有符号数的定点表示
原码转补码:取反加一
补码转原码:取反加一
原码反码补码的作用
(mod m) 的条件下,若能找到负数的补数,就可以用正数的加法来等价替代减法
补码——让减法操作转变为加法操作,节省硬件成本
移位运算
算术移位
原码的算数移位——符号位保持不变,仅对数值位进行移位。
右移:高位补0,低位舍弃。若舍弃的位=0,则相当于÷2;若舍弃的位≠0,则会丢失精度
左移:低位补0,高位舍弃。若舍弃的位=0,则相当于×2;若舍弃的位≠0,则会出现严重误差
反码的算数移位——正数的反码与原码相同,
因此对正数反码的移位运算也和原码相同。
右移:高位补0,低位舍弃。
左移:低位补0,高位舍弃。
反码的算数移位——负数的反码数值位与原
码相反,因此负数反码的移位运算规则如下,
右移:高位补1,低位舍弃。
左移:低位补1,高位舍弃。
补码的算数移位——正数的补码与原码相同,
因此对正数补码的移位运算也和原码相同。
右移:高位补0,低位舍弃。
左移:低位补0,高位舍弃。
补码的算数移位——负数补码=反码末位+1
导致反码最右边几个连续的1都因进位而变
为0,直到进位碰到第一个0为止。
规律——负数补码中,最右边的1及其右边
同原码。最右边的1的左边同反码
负数补码的算数移位规则如下:
右移(同反码):高位补1,低位舍弃。
左移(同原码):低位补0,高位舍弃。
算术移位的应用:等效乘除法
由于位数有限,因此有时候无法用算术移位精确地等效乘除法
逻辑移位
逻辑右移:高位补0,低位舍弃。
逻辑左移:低位补0,高位舍弃。
逻辑移位的应用:将R、G、B合并成RGB
循环移位
定点数的加减运算和溢出判断
原码的加减运算
补码的加减运算
溢出判断
方法三结果中双符号位的高位表示原本正确的符号
符号扩展
乘法运算
原码的乘法运算
机器字长n+1位(包括1位符号位,n位数值位)
逻辑右移的时候不带符号位(或者说带符号位0)移动n次,最终符号位由原符号位异或确定
补码的乘法运算
除法运算
原码除法
1.恢复余数法
2.加减交替法
虽然叫不恢复余数法,但是当最后一位余数为负时,仍然需要商0恢复余数
另:定点小数小于1,要保证定点小数除法得到的结果也是定点小数,因此定点小数的除法要保证被除数比除数小,结果小于一(第一步得到的商要为0,否则停止计算)
补码除法
末尾恒置一省事
强制类型转换
C语言里定点整数是用“补码”储存的
数据的存储和排列
1.大小端模式
大端模式:低位在低地址,高位在高地址
便于人类阅读
大端模式:高位在低地址,低位在高地址
便于机器处理
2.边界对齐
边界对齐方式可以方便寻址,访问一个字/半字都只需要一次访存(空间换时间)
边界不对齐方式可以充分利用储存空间