计算机组成原理 第五章(计算机的运算方法)—第三节(定点运算(上))

写在前面:

  1. 本系列笔记主要以《计算机组成原理(唐朔飞)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
  2. 视频链接:计算机组成原理(哈工大刘宏伟)135讲(全)高清_哔哩哔哩_bilibili

一、移位运算

1、概述

(1)移位运算在日常生活中很常见,例如15m可写成1500cm,单就数字而言,1500相当于数15相对于小数点左移了两位,并在小数点前面添了两个0,同样,15也相当于1500相对于小数点右移了两位,并删去了小数点后面的两个0。可见,当某个十进制数相对于小数点左移n位时相当于该数乘以10^{n},“右移”n位时相当于该数除以10^{n}

(2)计算机中小数点的位置是事先约定的,因此,二进制表示的机器数在相对于小数点做n位左移或右移时,其实质就是该数乘以或除以2^{n}

(3)移位运算称为移位操作,对计算机来说,移位运算有很大的实用价值,例如当某计算机没有乘(除)法运算线路时,可以采用移位和加法相结合,实现乘(除)运算。

(4)计算机中机器数的字长往往是固定的,当机器数左移n位或右移n位时,必然会使其n位低位或n位高位出现空位,那么,对空出的空位应该添补0还是1,这与机器数采用有符号数还是无符号数有关有符号数的移位称为算术移位,对无符号数的移位称为逻辑移位

2、算术移位规则

(1)不同码制机器数算术移位后的空位添补规则:

真值

码制

添补代码

正数

原码、反码、补码

0

负数

原码

0

补码

左移添0

右移添1

反码

1

机器数为正时,不论是左移还是右移,添补代码均为0

机器数为负时,三种机器数算术移位后符号位均不变

[1]由于负数的原码数值部分与真值相同,故在移位时只要使符号位不变,其空位均添0即可

[2]由于负数的反码各位除符号位外与负数的原码正好相反,故移位后所添的代码应与原码相反,即全部添1

[3]分析任意负数的补码可发现,当对其由低位向高位找到第一个“1”时,在此“1”左边的各位均与对应的反码相同,而在此“1”右边的各位(包括此“1”在内)均与对应的原码相同。故负数的补码左移时,因空位出现在低位,则添补的代码与原码相同,即添0;右移时因空位出现在高位,则添补的代码应与反码相同,即添1

③负数的原码左移时若高位丢1,结果出错;右移时若低位丢1,影响结果精度。负数的补码左移时若高位丢0,结果出错;右移时若低位丢1,影响结果精度。负数的反码左移时若高位丢0,结果出错;右移时若低位丢0,影响结果精度。

(2)举例:对-26移位后的结果如下。

移位操作

机器数

对应的真值

移位前

原码

1,0011010

-26

左移一位

1,0110100

-52

左移两位

1,1101000

-104

右移一位

1,0001101

-13

右移两位

1,0000110

-6

移位前

补码

1,1100110

-26

左移一位

1,1001100

-52

左移两位

1,0011000

-104

右移一位

1,1110011

-13

右移两位

1,1111001

-7

移位前

反码

1,1100101

-26

左移一位

1,1001011

-52

左移两位

1,0010111

-104

右移一位

1,1110010

-13

右移两位

1,1111001

-6

3、算术移位和逻辑移位比较

(1)逻辑移位的规则是:逻辑左移时高位移丢,低位添0;逻辑右移时低位移丟,高位添0。

(2)例如,寄存器内容为01010011,逻辑左移为10100110,算术左移为00100110(最高数位“1”移丢);又如,寄存器内容为10110010,逻辑右移为01011001,若将其视为补码,算术右移为11011001。

二、加法与减法运算

1、补码加减运算的基本公式

(1)补码加法的基本公式:

(2)补码减法的基本公式:

(3)举例:

2、溢出判断

(1)用一位符号位判断溢出:

①对于加法,只有在正数加正数和负数加负数两种情况下才可能出现溢出,符号不同的两个数相加是不会溢出的;对于减法,只有在正数减负数或负数减正数两种情况下才可能出现溢出,符号相同的两个数相减也是不会溢出的。

②以机器字长为4位(含1位符号位)为例,机器字长为4位的补码所对应的真值范围为-8\sim +7运算结果一旦超过这个范围即为溢出

③由于减法运算在机器中是用加法器实现的,因此不论是作加法还是减法,只要实际参加操作的两个数(减法时即为被减数和“求补”以后的减数)符号相同,结果又与原操作数的符号不同,即为溢出

(2)用两位符号位判断溢出:

①两位符号位的补码即变形补码,它是以4为模的,其定义为:

②在用变形补码作加法时,两位符号位要连同数值部分一起参加运算,而且高符号位产生的进位自动丢失,便可得到正确结果。

③变形补码判断溢出的原则是:当两位符号位不同时表示溢出,否则无溢出不论是否发生溢出,高位(第1位)符号位永远代表真正的符号

3、补码定点加减法所需的硬件配置

(1)下图所示的是实现补码定点加减法的基本硬件配置框图,图中寄存器A、X、加法器的位数相等,其中A存放被加数(或被减数)的补码,X存放加数(或减数)的补码。

(2)G_{A}为加法标记,G_{B}为减法标记。当作减法时,由“求补控制逻辑”将\overline{X}送至加法器,并使加法器的最末位外来进位加1,以达到对减数求补的目的。

(3)运算结果溢出时,通过溢出判断电路置“1”溢出标记V。

4、补码加减运算控制流程

(1)加(减)法运算前,被加(减)数的补码在A中,加(减)数的补码在X中。

(2)若是加法,直接完成(A)+(X)→A(mod 2或mod 2^{n+1})的运算;若是减法,则需对减数求补,再和A寄存器的内容相加,结果送A。

(3)最后完成溢出判断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zevalin爱灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值