第6章 计算机的运算方法_第1页
第6章 计算机的运算方法_第2页
第6章 计算机的运算方法_第3页
第6章 计算机的运算方法_第4页
第6章 计算机的运算方法_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机必算方法

康葆奈

6.1无符号数和有符号数

6.2数的定点表示和浮点表示

6.3定点运算

6.4浮点四则运算

6.5算术逻辑单元

本讲简要说明

•目的与要求:熟悉计算机中的数据表示方法,了解

计算机的基本运算和定点加减运算

■授课重点:数据表示方法,基本运算,定点加减运

•授课难点:数据表示方法,定点加减运算

数据是计算机加工和处理的对象,数据的

机器层次表示号直接影响到计算机的结构和性

能。

算术和逻辑单元(Arithmetic&LogicUnit)

•执行运算

•计算机其它部件都是服务于该部件

•可以处理整数

•也可以处理浮点数(floatingpoint(real)

numbers)

ALUInputsandOutputs

Control

AHags

Unit

ALU

RegistersARegisters

IntegerRepresentation

无符号数表示:

・只用0&1来表示每个数字

•正数以二进制形式保存

-e.g.41=00101001

•没有负号(minussign)

•没有小数点Noperiod

•符号-幅值表示法Sign-Magnitude

•补码表示法Two'scompliment

符号■幅值表示法(原码Sign-Magnitucie)

・最左边的位是符号位

•0表示正

•1means负

•+18=00010010

•-18=10010010

•问题

—Needtoconsiderbothsignandmagnitudein

arithmetic

—Tworepresentationsofzero(+0and-0)

补码表示法

•时钟正拨和倒拨

•模和同余

结论6.1

»一个负数加上“模”即得该负数的补数

>一个正数和一个负数互为补数时

它们绝对值之和即为模数

•计数器(模16)1011—0000?

10111011

—1011+0101

00001Q000

可见-1011可用+0101代替

自然去掉

t己作"1011=+0101(mod24)

同理-011三+101(mod23)

-0.1001=+1.0111(mod2)

补码定义

整数

0,x2W>x>0

国补=

2/1+x0>x>(mod2n+1)

X为真值〃为整数的位数

如x=+1010x=-1011000

国补=0,1010国补=27+1+(-1011000)

=100000000

-1011000

用逗号将符号位

和数值部分隔开「1,0101000

1

补码表示:

•+3=00000011

•+2=00000010

•+1=00000001

•+0=00000000

•-1=11111111

•-2=11111110

•-3=11111101

优点:

•0的表示是唯一的

•运算容易(seelater)

•求补码容易

-3=00000011

—Booleancomplementgives11111100

-Add1toLSB11111101

补码特例1

・0=00000000

•Bitwisenot11111111

•Add1toLSB+1

•Result100000000

•Overflowisignored,so:

•-0=0

补码特例2

•-128=10000000

•取反01111111

•Add1toLSB+1

•Result10000000

•So:

•-(-128)=-128X

补码的范围

•8bit2scompliment

-+127=01111111=27-1

--128=10000000=-27

•16bit2scompliment

-+32767=01111111111111111=215-1

--32768=10000000000000000=-215

反码表示法6.1

(1)定义

整数

r0,x2n>x>0

[刈反=1

、(2/i—l)+x0>x>2〃(mod2n+1i)

X为真值〃为整数的位数

如x=+1101x=-1101

4+1

国反=0,1101[x]s=(2-1)-1101

=mu-iioi

用逗号将符号位=1,0010

和数值部分隔开

小数6.1

rxi>x>o

[x]反=4

L(2-2-W)+X0>X>1(mod2”

x为真值n为小数的位数

x=+0.1101x=-0.1010

[x]反=0.1101M反=(2-24)-0.1010

=1.1111-0.1010

用小数点将符号位=1.0101

和数值部分隔开一t

(2)举例6.1

例6.8已知[刈反=0,1110求x

解:由定义得x=+1110

例6.9已知[刈反=1,1110求x

解:由定义得x=[x]^-(24+1-1)

=14110-mu

=-oooi

例6.10求0的反码

解:设x=+0.0000[+0.0000]反=0.0000

x=-0.0000[-0.0000]反=1.1111

同理,对于整数[+0]反=0,0000[-0]反=1,1111

•••[+0]反声[划反

移码表示法

补码表示很难直接判断其真值大小

如十进制二进制补码

x=+21+10101040101错

x=-21-101011,01011

x=+31+111110,11111、错

x=-31-111111,00001>大

X+2,

*0101+100000=110101、大

-10101+100000=001011/正确

+11111+100000=111111,大

正确

-11111+100000=000001

⑴移码定义

[x]^=2n+xC2n>x>2")

工为真值,〃为整数的位数

移码在数轴上的表示

移码

国移=25+10100=1,10100

x=-101001--------用逗号将符号位

和数值部分隔开

国移=25—10100=0,01100

移码的特点

A当X=0时[+0]移=25+0=1,00000

[叫移=25-0=1,00000

,[+0]移=卜0]移

»当〃=5时最小的真值为15=-100000

[-100000]移=25-100000=000000

可见,最小真值的移码为全0

用移码表示浮点数的阶码

能方便地判断浮点数的阶码大小

三种码制的比较与转换

工■比较

•对于正数它们都等于真值本身,而对于负数各有不同的

表示。

•最高位都表示符号位,补码和反码的符号位可作为数值

位M一部分看信,和数值位一起参加运算;但原码的符

号位不允许和数值位同等看待,必须分开进行处理。

•对于真值o,原码和反码各有两种不同的表示形式,而

补码只有唯一的一种表示形式。

•原码、反码表示的正、负数范围相对零来说是对称的;

但补码负数展示范围较正数表示范围宽,能多袤示一个

最负的数(绝对值最大的负数),其值等于・2八(纯整

数)或■工(纯小数)。

数值数据的表示

设机器字长4位(含1位符号位),以纯整数为例:

原码或反码可表示的数

-0+0

I_I_I_I_I_I_[\|/[_I_I_I_I_I_I

-7-6-5-4-3-2-10+1+2+3+4+5+6+7

K

------------------▼------------------J---------sz----------

7个负数7个正数

补码可表示的数(多表示一个负数)

T-6-5-4-3j0+2+3+4+5+6+7

8个负数77S

真值与3种机器数间的对照

真值X[X]原[X]反[X]补真值X[X]原[X]反[X]补

十进制二进制十进制二进制

+0+0000000-0-000100011110000

+1+0010001-1-001100111101111

+2+0100010-2-010101011011110

+3+0110011-3-011101111001101

+4+1000100~4-100110010111100

+5+1010101-5-101110110101011

+6+1100110-6-110111010011010

+7+1110111-7-111111110001001

+8——-8-1000—一1000

2•转换

如果已知机器的字长,则机器数的位数应补够相

应的位。例如,设机器字长为8位,贝

X^lOllX2=-1011

[XJ原=00001011.区]原二100010工工

[XJ补=00001011[X2]#=11110101

[XJ反=00001011[X2]反=工工工10100

X3=0,1011X4=-0.1011

[X3]原=。・101工。00[X4]原=工,10工1000

[X3]补=0・10工1000[X4]#=1.0101000

[X3]反=0・10工1000[X4]反=1.0100工工工

6.2数的定点表示和浮点表示

小数点按约定方式标出

一定点表不

I数值部分I数值部分

小数点位置小数点位置

定点机小数定点机整数定点机

原码—(1—2・与〜+(1—2-)-(2n-1)^+(2n-l)

补码-1+(1-2~n)-2n^+(2n-l)

反码—(1—2-n)〜+(1-2-n)_(2〃一1)〜+(2n-l)

:、浮点表示6.2

N=Sx/j浮点数的一般形式

S尾数j阶码〃基数(基值)

计算机中/取2、4、8、16等

当r=27V=11.0101一二进制表不

/=0.110101X2回了规格化数

=1.10101X21

=1101.01X210

Z=0.00110101X2100

计算机中s小数、可正可负

j整数、可正可负

1.浮点数的表示形式6.2

JfJlJ1LsfS\S)

吩阶码的

法尾数的数值部分

数值部分

小数点位置

Sf代表浮点数的符号

n其位数反映浮点数的精度

m其位数反映浮点数的表示范围

衣和阳共同表示小数点的实际位置

2.浮点数的表示范围6.2

上溢阶码,最大阶码

下溢阶码v最小阶码按机器零处理

上溢上溢

负数区下溢正数区

丁o

最小负数最大正数

—2(2J)X(1—2-〃)2(2,M-DX(1-2-W)

最小正数

-215X(1-2-10)215X(1-2-10)

2-(2J)X2f

2T§X2H0

最大负数设胆=4

-2-(2J)x2fn=10

_2小x2To

3.浮点数的规格化形式6.2

r=4尾数最高2位不全为0基数不同,浮点数的

r=8尾数最高3位不全为0规格化形式不同

4.浮点数的规格化

r=2左规尾数左移1位,阶码减1

右规尾数右移1位,阶码加1

r=4左规尾数左移2位,阶码减1

右规尾数右移2位,阶码加1

r=8左规尾数左移3位,阶码减1

右规尾数右移3位,阶码加1

基数『越大,可表示的浮点数的范围越大

基数「越大,浮点数的精度降低

例如:设阳=4,n=10,r=26.2

尾数规格化后的浮点数表示范围

最大正数2+U11X0.1111111111=215X(l-2-10)

、________J

V

10个1

最小正数21111X0.1000000000=2-15X2」=2十

9个0

最大负数2-11nX(-0.1000000000)=-2-15X=-2-16

9个0

最小负数2+uiiX(-O.Hllllllin=-215X(l-2-10)

Y

10个1

•例6.14将-58表示成二进制定点数和

浮点数,并写出它在定点机和浮点机中的三种机

器数及阶码为移码、尾数为补码的形式(其他要

求同上例)。

6.2

解:设x=-58

二进制形式x=-111010

定点表示x=-0000111010

浮点规格化形式x=-(0.1110100000)x2n°

定点机中浮点机中

原=1,0000111010团原=0,0110;1.1110100000

补=1,1111000110区补=0,0110;1.0001100000

反=1,1111000101区反=0,0110;1.0001011111

团阶移、尾补=1,0110;1.0001100000

机器零6.2

>当浮点数尾数为o时,不论其阶码为何值

按机器零处理

>当浮点数阶码等于或小于它所表示的最小

数时,不论尾数为何值,按机器零处理

如阳=4n=10

当阶码和尾数都用补码表示时,机器零为

x,xxxx;0.00・・・0

(阶码=T6)1,0000;x.xx…x

当阶码用移码,尾数用补码表示时,机器零为

0,0000;0・00・・・0

有利于机器中“判0”电路的实现

IEEE754格式

(a)Singleformat

sign

bit<IIbits52bits

biased

fraclinn

cxponenl

Ib>Doubleformat

浮点数(FloatingPoint)

signof

significand

8bits23bits

biasedexponentsignificand

(a)Format

•+/-.significandx2exP°nent

・小数点位于符号位和尾数之间

•Exponent指示小数点位置

IEEE754标准的浮点数

最高位为数符位;

其后是8位阶码,以2为底,阶码的偏置值为127;

其余23位是尾数。

隐含尾数最高数位1(24位)

隐含的1是一位整数(即位权为2。)

浮点数的阶码采用移码的原因

•便于比较浮点数的大小。阶码大的,其对应的

真值就大,阶码小的,对应的真值就小。

•简化机器中的判零电路。当阶码全为0,尾数也

全为0时,表示机器零。

浮点数的符号

•最高位表示尾数的符号

•阶码用移码来表示

—e.g.偏移量128means

—8bitexponentfield

—Purevaluerange0-255

—Subtract128togetcorrectvalue

—Range-128to+127

规格化尾数

•浮点数通常都是规格化的

•i.e.通过阶码的调整使得尾数的最高位是1

•因为规格化的最高位总是1,因此没有必要来专

门保存它

•e.g.3.123x103

FloatingPointExamples

10100,•5n

1.1010001o01001001110100010000000000000000=1.638125x2-u

-1.101000111001001110100010000000000000000=-1.638125x220

X;-101001

20

1.1010001ZSM00110101110100010000000000000000=1.638125x2~

yO-1D10Q_

-1.1010001A410110101110100010000000000000000=-1.638125x2-20

lb>Examples

FPRanges

•对于一个32位数

—8bitexponent

一?*

•精度

—23bitmantissa?*

IEEE754标准的浮点数

例13:将(1OO.25)io转换成短浮点数格式。

⑴十进制数二进制数

(1OO.25)1O=(11OO1OO.O1)2

⑵非规格化数一规格化数

1100100.01=1.10010001X26

⑶计算移码表示的阶码(偏置值+阶码真值)

1111111+110=10000101

⑷以短浮点数格式存储该数。

符号位=0

阶码=10000101

尾数=10010001000000000000000

IEEE754标准的浮点数(续)

短浮点数代码为

0;10000101;1001000100000000000

0000

表示为十六进制的代码:42C88000Ho

例14:把短浮点数C1C90000H转换成为十进制数。

⑴十六进制一二进制形式,并分离出符号位、阶码和尾

数。

ClC90000H=

工;100000工工;10010010000000000000000

符号位油码&

IEEE754标准的浮点数(续)

⑵计算出阶码真值(移码-偏置值)

10000011-1111111=100

⑶以规格化二进制数形式写出此数

1.1001001X24

(4)写成非规格化二进制数形式

11001.001

⑸转换成十进制数,并加上符号位。

(11OO1.OO1)2=(25.125)1O

所以,该浮点数=・25.125

6.3定点运算

•、移位运算

1.移位的意义

15•m=1500•cm

小数点右移2位

机器用语15相对于小数点左移2位

(小数点不动)

左移绝对值扩大

右移绝对值缩小

在计算机中,移位与加减配合,能够实现乘除运算■

2.算术移位规则6.3

符号位不变

码制添补代码

正数原码、补码、反码0

原码0

左移添0

负数补码

右移添1

反码1

例6J66.3

设机器数字长为8位(含1位符号位),写出

力=+26时,三种机器数左、右移一位和两位后的表

示形式及对应的真值,并分析结果的正确性。

解:A=+26=+11010

则⑷原=[同补=⑷反=0,0011010

机器数

移位操作⑷原二⑷产⑷对应的真值

P

移位前0,0011010+26

左移一位0,0110100+52

左移两位0,1101000+104

右移一位0,0001101+13

右移两位0,0000110+6

例6J76.3

设机器数字长为8位(含1位符号位),与出

4=-26时,三种机器数左、右移一位和两位后的表

示形式及对应的真值,并分析结果的正确性。

解:^=-26=-11010

原码移位操作机器数对应的真值

移位前1,0011010-26

左移一位1,0110100-52

左移两位1,1101000-104

右移一位1,0001101-13

右移两位1,0000110一6

籍位程佐札奥特对由的吉仲6.3

移位刖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

籍位程佐札奥特对由的吉仲6.3

移位刖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

4.算术移位和逻辑移位的区别6.3

算术移位有符号数的移位

逻辑移位无符号数的移位

逻辑左移低位添0,高位移丢r^o

逻辑右移高位添0,低位移丢0^1

例如0101001110110010

逻辑左移10100110逻辑右移01011001

算术左移00100110算术右移11011001(补码)

高位1移丢

cWoioioon回110100117

J

二、加减法运算6.3

1.补码加减运算公式

(1)加法

整数⑷补+回补=[4+司补(mod2"+i)

小数⑷补+[用补=[4+司补(mod2)

(2)减法

A-B=A+(-B)

整数[A—用补=[A+(-B)]补=[Z]补+[—用补(mod2"+i)

/」、数[A-均补=[4+(—万)]补=[Z]补+[—£]补(mod2)

连同符号位一起相加,符号位产生的进位自然丢掉

2.举例6.3

例6.18~~设力一0・1。11,牙――U.UIUI--------------------

求因+用补验证

解:⑷补=0.1011

0.1011

+[万]补=1.1011—0.0101

3]补+[£]补#.0110=的+£]补0.0110

:.A+B=0.0110

例6.19设/=—9,B=-5

求[A+B]^验证

解:⑷补=1,0111

-1001

+㈤补=1,1011+-0101

补+[£]补龙因+-1110

1,0010=£]补L

:.A+B=-U1Q

3.溢出判断6.3

⑴一位符号位判溢出

参加操作的两个数(减法时即为被减数和“求补”

以后的减数)符号相同,其结果的符号与原操作

数的符号不同,即为溢出

硬件实现

最高有效位的进位㊉符号位的进位=1溢出

如1㊉0=1]

卜有溢出

0㊉1=1.

0㊉0=0]

无溢出

1㊉1=0.

(2)两位符号位判溢出6.3

X1>x>0

4+x0>x>-l(mod4)

团补,+m补,=[%+y]补,(mod4)

口E补,=凶补,+[一川补,(mod4)

结果的双符号位相同未溢出00,xxxxx

11,XXXXX

结果的双符号位不同溢出10夕XXXXX

01夕XXXXX

最高符号位代表其真正的符号

补码加减运算的逻辑电路

()1=overflowhit

SW=Switch(seledadditionnrsuhiraciion)

6.3定点乘法运算

在计算机中,乘法运算大多数由累加与移

位来实现,也有些机器中具有由大规模集成电

路制造的阵列乘法模块。

乘法运算(Multiplication)

•比加减法运算复杂

•计算每一位的部分积

•注意移位

•对部分积相加

•例:1011

•x1101

乘法举例

1011被乘数Multiplicand(11dec)

x1101乘数Multiplier(13dec)

1011部分积Partialproducts

0000Note:ifmultiplierbitis1copy

1011multiplicand(placevalue)

1011otherwisezero

10001111乘积Product(143dec)

Note:needdoublelengthresult

自己设计?寄存器数目?

硬件实现

Multiplkand

<a)BlockDia^nini

ExecutionofExample

CAQM

0000011011011InitialValues

0101111011011AddFirst

0010111101011ShiftCycle

Second

0001011111011ShiftCycle

0110111111011AddThird

0011011111011ShiftCycle

1000111111011AddFourth

0100011111011ShiftCycle

乘法流程图

补码乘法运算

•无符号数乘法运算策略不适用!

1001

原因

xOOll1?

1011

=原因2?

x1101

•解决方法1

一将乘数和被乘数转换成正数

一按无符号数乘法规则相乘

一如果符号不同,则结果取负

•解决方法2

—Booth'salgorithm(布思算法)

Booth'salgorithm(布思算法)

•MX(OOOllllO)

•=MX(21+22+23+24)

•=MX(?)

•-611111010

Booth'sAlgorithm

ExampleofBooth'sAlgorithm

AQQ-iM

0000001100111InitialValues

1001001100111AA-M7First

1100100110111Shift5,Cycle

Second

1110010010111Shift,Cycle

0101010010111AA+M1Third

0010101000111ShiftJCycle

Fourth

0001010100111Shift

Cycle

(

T

(

7x

)R

X

2)—

••

除法运算(Division)

•比乘法运算更加复杂

•Negativenumbersarereallybad!

•Basedonlongdivision

DivisionofUnsignedBinaryIntegers

00001101.Quotient

Divisor►101110010011Dividend

1011

001110

Partial1011

Remainders

001111

1011

100Remainder

FlowchartforUnsignedBinaryDivision

QuotientinQ

RemainderinA

恢复余数法

AQM=0011

00000111初始值

00001110移位

1101减

ooooino恢复

1移

00O1(M.位

1110减

000101复

A1

OOH>01位

0000

1uJ1.o1置

0000-=1

移Qo

i位

on.-o

0001J减

l复

1110恢

o4.o

0001HJ

不恢复余数法

AQM=0011

00000111初始值

00001110移位

11011110部分余数为负商为0

10111100左移1位

11101100加上Y

部分余数为负商为0

11011000左移1位

00001001加上Y

部分余数为非负商为1

00010010左移1位

补码的除法运算

•除数装入M寄存器,被除数装入Q寄存器。被除数

必须以2n位的补码来表示。0111^00000111

•A、Q左移一'位。

•M、A符号相同,则A-A-M否则A-A+M

•如果A在操作后符号未改变,则上述操作成功。

(1)操作成功则Q-1。

(2)操作不成功Q-0。

•重复上述步骤。

•余数在A中。如果被除数与除数符号相同,则Q为

商,否则Q中数值的2的补码才是正确的商。

补码除法运算示例:

AQM=0011

11111001初始值

11110010移位

0010加

11110010恢复

11100100位

0001加

11100100复

11001000加

1111

11111001=1

QO位

11110010加

0010恢

11110010

6.4规格化浮点运算

6.4.1浮点加减运算

EA

A=MAX2

EB

B=MBX2

规格化浮点数A、B加减运算通式为:

A±B=(MA,EA)±(MB,EB)

={(MA±MBX29「EB),EA)EA>EB

1MAX2-(EB-E4)MB,EB)EA<EB

1.浮点数加减运算步骤

•检查操作数是否有0

•对阶

对阶的规则是:小阶向大阶看齐。

•尾数加/减

•尾数结果规格化

浮点数加减运算流程

2.浮点数加减运算举例

有两浮点数为

A=0.101110X201

B="(0.101011)X210

假设这两数的格式:阶码4位,用移码

(偏置值为23)表示;尾数8位,用补码表示

,包含一位符号位,即

阶码尾数

[A]$=0111;0.1011100

[B]浮=0110;1.0101010

(1)对阶

求阶差:AE=EA-EB=-1-(-2)=1

AE=1,表示EA>EB。按对阶规则,

号MB右移一位,EB+1->EB,得:

[B]浮=0111;1.1010101

⑵尾数求和

00.1011100

+11.1010101

00.0110001

⑶尾数结果规格化

由于结果的尾数是非规格化的数,故应左规

o尾数每左移一位,阶码减1,直至尾数成为

规格化数为止。最后结果为

[A+B]浮=0110;0.110001

即A+B=(0.110001)X210

未发生溢出

6.4.2浮点乘除运算

EA

A=MAX2

EB

B=MBX2

规格化浮点数A、B乘除运算通式为:

(MAzEA)x(MB/EB)=(MAxMB/EA+EB)

(MA,EAA(MB,EB)=(MA+MB,EA-EB)

浮点数乘除运算

•检查0

•力口/减阶码

•乘/除尾数

•规格化尾数

•舍入操作

•乘积的长度是乘数和被乘数的长度两倍

浮点数乘法运算流程图

SubtractBiasj|

浮点数除法运算流程图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论