计算机的运算方法

写在前面: 我是「虐猫人薛定谔i」,一个不满足于现状,有梦想,有追求的00后
\quad
本博客主要记录和分享自己毕生所学的知识,欢迎关注,第一时间获取更新。
\quad
不忘初心,方得始终。自己的梦想,终有一天会实现!
\quad

❤❤❤❤❤❤❤❤❤❤


计算机的运算方法

无符号数和有符号数

在计算机中参与运算的数有两大类:无符号数和有符号数

无符号数

计算机的运算方法

有符号数

对有符号数而言,符号的“正”、“负”机器是无法识别的,但由于“正”、“负”恰好是两种截然不同的状态,如果用“0”表示“正”,用“1”表示“负”,这样符号也被数字化了,并且规定将它放在有效数字的前面,即组成了有符号数。
计算机的运算方法
计算机的运算方法
把符号“数字化”的数称为机器数,而把带“+”或“-”符号的数称为真值。
原码表示法

原码是机器数中最简单的一种表示形式,符号位为0表示正数,符号位为1表示负数,数值位即真值的绝对值,故原码表示又称带符号的绝对值表示。
为了书写方便以及区别整数和小数,约定整数的符号位与数值位之间用逗号隔开;小数的符号位与数值位之间用小数点隔开。

计算机的运算方法
计算机的运算方法
在原码中“零”有两种表示形式

补码表示
计算机的运算方法

正数相对于“模”的补数就是正数本身
一个负数可以用它的正补数来代替,而这个正补数可以用模加上负数本身求得
一个正数和一个负数互为补数时,它们绝对值之和即为模数
正数的补数即该正数本身
补码中的“零”只有一种表示形式

反码表示
反码通常用来作为由原码求补码或者由补码求原码的中间过渡。
计算机的运算方法
计算机的运算方法
移码表示
当真值用补码表示时,由于符号位和数值部分一起编码,与习惯上的表示法不同,因此人们很难从补码的形式上直接判断出其真值的大小。
计算机的运算方法
计算机的运算方法

在移码中零也是惟一的。
同一个真值的移码和补码仅差一个符号位,若将补码的符号位由“0”改为“1”,或者从“1”改为“0”,即可得到该真值的移码。

计算机的运算方法

数的定点表示和浮点表示

在计算机中,小数点不用专门的器件表示,而是按约定的方式标出,共有两种方法表示小数点的存在,即定点表示和浮点表示。

定点表示

计算机的运算方法

当小数点位于数符合第一数值之间时,机器内的数为纯小数;
当小数点位于数值位之后时,机器内的数为纯整数。
在定点机中,由于小数点的位置固定不变,故当机器处理的数不是纯小数或纯整数时,必须乘上一个比例因子,否则会产生“溢出”。

浮点表示

浮点数即小数点的位置可以浮动的数。
计算机的运算方法

为了提高数据的精度以及便于浮点数的比较,在计算机中规定浮点数的尾数用纯小数形式。此外,将尾数最高位为1的浮点数称为规格化数。浮点数表示成规格化形式后,其精度最高。

浮点数的表示形式
计算机的运算方法
浮点数的表示范围
计算机的运算方法
当浮点数的阶码大于最大阶码时,称为上溢,此时机器停止运算,进行中断溢出处理
当浮点数的阶码小于最小阶码时,称为下溢,此时溢出的数的绝对值很小,通常将尾数各位强制置为零,按机器零处理,此时机器可以继续运行。

定点数和浮点数的比较
计算机的运算方法

浮点数在数的表示范围、数的精度、溢出处理和编程方面(不取比例因子)均优于定点数。但在运算规则、运算速度及硬件成本方面又不如定点数。

定点运算

定点运算包括移位、加、减、乘、除几种。

移位运算

移位运算称为移位操作,对计算机来说,有很大的实用价值。
计算机的运算方法
计算机的运算方法
计算机的运算方法
算术移位与逻辑移位的区别

有符号的移位称为算术移位,无符号数的移位称为逻辑移位。
逻辑移位的规则是:逻辑左移时,高位移丢,低位添0;逻辑右移时,低位移丢,高位添0。

加法与减法运算

加减法是计算机中最基本的运算,因减法运算可以看做被减数加上一个减数的负值,故在此将机器中的减法运算和加法运算合在一起讨论。
现代计算机中都采用补码作加减法运算。
计算机的运算方法

不论操作数是正还是负,在做补码加减法时,只需将符号位和数值部分一起参加运算,并且将符号位产生的进位自然丢掉即可。

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

不论是作加法还是减法,只要实际参加操作的两个数(减法时即为被减数和“求补”以后的减数)符号相同,结果又与原操作数的符号不同,即为溢出。

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

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

计算机的运算方法
计算机的运算方法

乘法运算

在计算机中,乘法运算是一种很重要的运算,有的机器由硬件乘法器直接完成乘法运算,有的机器内没有乘法器,但可以按机器作乘法运算的方法,用编程软件实现。
计算机的运算方法
原码乘法

原码一位乘的运算规则如下:
1、乘积的符号位由两原码符号位异或运算结果决定
2、乘积的数值部分由两数绝对值相乘

计算机的运算方法
原码一位乘控制流程
计算机的运算方法
原码两位乘
原码两位乘与原码一位乘一样,符号位的运算和数值部分是分开进行的,但原码两位乘是用两位乘数的状态来决定新的部分积如何形成,因此可以提高运算速度。
两位数共有四种状态:
计算机的运算方法
原码两位的运算规则
计算机的运算方法
补码乘法

由于比较法的补码乘法运算规则不受乘数符号的约束,因此 ,控制线路比较简明,在计算机中普遍采用。
补码比较法(Booth算法)所需的硬件配置
计算机的运算方法
补码比较法(Booth算法)控制流程
计算机的运算方法

为了提高乘法的运算速度,可采用补码两位乘
补码两位乘的运算规则:
计算机的运算方法

除法运算

笔算除法的特点如下:
1、每次上商都是由心算来比较余数(被除数)和除数的大小,确定商为“1”还是“0”
2、每做一次减法,总是保持余数不动,低位补0,再减去右移后的除数
3、上商的位置不固定
4、商符单独处理
原码除法
原码除法中由于对余数的处理不同,又可分为恢复除法和不恢复余数法(加减交替法)两种
(1)恢复余数法

恢复余数法的特点是:当余数为负时,需加上除数,将其恢复成原来的余数。
由上所述,商值的确定是通过比较被除数和除数的绝对值大小实现的。
在恢复余数法中,每当余数为负时,都需要恢复余数,这就延长了机器除法的时间,操作也很不规则,对线路结构不利。

(2)加减交替法

加减交替法又称不恢复余数法,可以认为它是恢复余数法的一种改进算法
原码加减交替法所需的硬件配置
计算机的运算方法
原码加减交替法控制流程
计算机的运算方法

补码除法
补码除法的符号位和数值部分是一起参加运算的,因此在算法上不像原码除法那样直观,主要需要解决3个问题:
1、如何确定商值
2、如何形成商符
3、如何获得新的余数
计算机的运算方法
计算机的运算方法
计算机的运算方法
计算机的运算方法

浮点四则运算

浮点加减运算

浮点加减运算必须按以下几步进行
计算机的运算方法
常用的舍入方法:
(1)“0舍1入”法

“0舍1入”法类似于十进制数运算中的“四舍五入”法,即在尾数右移时,被移去的最高数值位为0,则舍去;被移去的最高位数值位为1,则在尾数的末位加1。这样做可能使尾数又溢出,此时需再做一次右规。

(2)“恒置1”法

尾数右移时,不论丢掉的最高数值位是“1”或“0”,都使右移后的尾数末位恒置“1”。这种方法同样有使尾数变大和变小的两种可能。

计算机的运算方法

浮点乘除运算

两个浮点数相乘,乘积的阶码应为相乘两数的阶码之和,乘积的尾数应为相乘两数的尾数之积。两个浮点数相除,商的阶码为被除数的阶码减去除数的阶码,尾数为被除数的尾数除以除数的尾数所得的商。

算术逻辑单元

针对每一种算术运算,都必须有一个相应的基本硬件配置,其核心部件是加法器和寄存器。当需要完成逻辑运算时,势必需要配置相应的逻辑电路,而ALU电路是既能完成算术运算又能完成逻辑运算的部件。

计算机的运算方法

ALU电路

计算机的运算方法
计算机的运算方法

快速进位链

随着操作数位数的增加,电路中进位的速度对运算时间的影响也越来越大,为了提高运算速度,于是引入了快速进位链

1、并行加法器
并行加法器由若干个全加器组成。
n + 1 个全加器级联就组成了一个n + 1 位的并行加法器
计算机的运算方法
2、串行进位链
串行进位链是指并行加法器中的进位信号采用串行传递。

四位串行进位链
计算机的运算方法
3、并行进位链
并行进位链是指并行加法器中的进位信号是同时产生的,又称先行进位、跳跃进位等。
理想的并行进位链是n位全加器的n位进位同时产生,但实际实现有困难。通常并行进位链有单重分组和双重分组两种实现方案。
(1)单重分组跳跃进位

单重分组跳跃进位就是将n位全加器分成若干小组,小组内的进位同时产生,小组与小组之间采用串行进位,这种进位又有组内并行、组间串行之称。

计算机的运算方法
(2)双重分组跳跃进位

双重分组跳跃进位就是将n位全加器分成若干大组,每个大组中又包含若干小组,而每个大组内所包含的各个小组的最高进位是同时产生的,大组与大组间采用串行进位。因各小组最高位进位是同时形成的,小组内的其他进位也是同时形成的(注意:小组内的其他进位与小组的最高位进位并不是同时产生的),故又有组(小组)内并行、组(小组)间并行之称。

计算机的运算方法
计算机的运算方法
计算机的运算方法
计算机的运算方法
计算机的运算方法