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

下载本文档

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

文档简介

第六章计算机的运算方法

6.1无符号数和有符号数4

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

6.3定点运算

6.4浮点四则运算k

6.5算术逻辑单元

6.1无符号数和有符号数

无符号数

机器字长:寄存器的位余

无符号数:寄存器的每位都用于存放数值

机器字长反映无符号数的表示范围

8位0〜255

16位0-65535

有符号数

1.机器数与真值

真值机器数

带符号的数符号数字化的数

+0.1011

小数点的位置

-0.1011

小数点的位置

+1100

小数点的位置

-1100

小数点的位置

2.原码表示法

(1)定义

整数

ro,x2n>x>0

国原=

I2。0>x>T

x为真值〃为整数的位数

如x=+1110[x]原=0/110

用逗号将符号位

丁和数值部分隔开

II

x=-1110[汨原=24+1110=1,1110

带符号的绝对值表示匚一

小数

rx1>x>0

㈤原=Iii

I1-x0>x>1

X为真值I

如x=+0.1101[x]原=0.1101用小数点将符号

‘t-------------位和数值部分隔开

I

x=-0.1101[x]jM=1-(-0.1101)=1.1101

x=+0.1000000凶原=0.1000000用小数点将付节

t-------------位和数值部分隔开

I

X=-0.1000000区原=1-(-0.1000000)=1.1000000

(2)举例

例6.1已知[x]原=1.0011求x-0.0011

解:由定义得一

x=1-国原=1-1.0011=-0.0011

II

例6.2已知[x]原=1,1100求x-1100

解:由定义得--------------

x=24-凶原=10000-1,1100=-1100

例6.3已知R]原=0.1101求x

解:根据定义*/[x]>=0.1101

•e.x=+0.1101

例6.4求x=0的原码

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

x=-0.0000[-0.0000]原=1.0000

同理,对于整数.[+0]原=0,0000

[-0]原=1,0000

•••[+0]原#[叫原

原码的特点:简单、直观

但是用原码作加法时,、会出现如下问题:

要求数1数2实际操作结果符号

加法正正加正

加法正负减可正可负

加法负正减可力可负

加法负负力口负』

能否只作加法?

找到一个与负数等价的正数来代替这个负数

就可使减——>加

3.补码表示法

(1)补的概念

•时钟逆时针顺时针

-3±9

T15

可见-3可用+9代替减法一>加法产

称+9是-3以12为模的补数/3

t己彳乍一3三+9(mod12)时钟以

同理-4=+8(mod12)12为模

一5三+7(mod12)

结论

>一个负数加上“横”、即得该负数的补

蓼一个正数和一个负数互为未遂时,它们绝对值之和

即为模数

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

10111011

—1011.0101

0000段00

可见-1011可用+0101代替『

,,自然去掉\

t已作-1011=+0101(mod24)

同理-011=+101(mod23)

-0.1001=+1.0111(mod2)

(2)正数的补数即为其本身

两个互为补数的数1-1011=+0101J(mod24)

分别加上模+10000+10000

结果仍互为补数+0101=+

+0101=+0101(mo丢掉

可见+0101-^+0101

I-L-ion

?血0101—10101

?|I],0101--1011

24+1—1011=100000

-1011

1,0101

(3)补码定义

整数

0,x2W>x>0

2.1+x0>x>(mod2w+1)

X为真值〃为整数的位数

如x=+1010x=-1011000

[刈补=04010[刈补=27+1+(-1011000)

=100000000

-1011000

用逗号将符号位

和数值部分隔开「1,0101000

小数

rx1>x>0

闵补=

I2+x0>x>4(mod2)

'为真值

如x=+0.1110x=-0.1100000

[刈补=

0.1110[x]#=2+(-0.1100000)

=10.0000000

-0.1100000

用小数点将符号位1.0100000

________I

和数值部分隔开一

(4)求补码的快捷方式

设*=-1010时

则[划补=24+1-1010=11111+1-1010

=100000=mil+1

-1010-1010_

又[x]原

当真值为负时,补码可用原码除符号位外

每位取反,末位加1求得

⑸举例

例6.5已知[刈补=0.0001

求x

解:由定义得X=+0.00叫'I

例6.6已知国补=1.0001国补一国原

求x国原=1.1111

解:由定义得,Ax=-0.1111

X=[x]#-2

=1.0001-10.0000

=-0.1111

例6.7已知国补=1,1110

求x

o

解:由定义得补工国原I

4+1

X=[X]#-2[XQ=1,0010

=1,1110-100000,X=-0010

=-0010

当真值为负时,原码可用补码除符号位外

每位取反,末位加1求得

练习求下列真值的补码

真值

x=+7010001100,10001100,1000110

x=-70=-10001101,01110101,1000110

x=0.11100.11100.1110

x=-0.11101.00101.1110

x—0・0000][+0]补=[-0]补0.00000.0000

x=卜0.00000.00001.0000

不肯廉示

x=-1.00001.0000

x1>x>0

由小数补码定义国补=

2+x0>x>4(mod2)

[-1]补=2+X=10.0000-1.0000=1.0000

4.反码表示法

⑴定义

整数

f0,x2n>x>0

反一

【(2"1-l)+x0>x>2〃(mod2w+1

X为真值〃为整数的位数

如x=+1101x=-1101

[汨反=0/101[刈反=(24+1-1)-1101

=11111-1101

用逗号将符号位=1,0010

和数值部分隔开______t

小数

rxi>x>o

[刈反=1

L(2-2-n)+x0>X>1(mod2”

X为真值〃为小数的位数P

X=+0.1101x=-0.1010

[汨反=0.1101[划反=(2-24)-0.1010

=1.1111-0.1010

用小数点将符号位=1.0101

和数值部分隔开一___t

(2)举例

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

解:由定义得x=+1110

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

4+1

解:由定义得x=国反-(2

=191110-11111

=-0001

例6.10求0的反码

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

x=-0.0000[-0.0000]反=1.1111

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

・••[+0]反r[划反

三种机器数的小结

A最高位为符号位,书写上用“丁(整数)

或(小数)将数值部分和符号位隔开

>对于正数,原码=补码=反码

A对于负数,符号位为1,其数值部分

原码除符号位外每位取反末位加1一补码

原码除符号位外每位取反一反码

例6.11设机器数字长为8位(其中一位为符号位)

对于整数,当其分别代表无符号数、原码、补码和

反码时,对应的真值范围各为多少?

无符号数原码对应补码对应反码对应

二进制代码

对应的真值的真值的真值的真值

00000000±0~+0~

000000011+1+1

000000102+2+2

1…•

01111111112+127+127

10000000127-128-127

28-0

10000001-1-127-126

29・

.:

2+1

111111012253-125-3

111111102254-126-2-1

11111111255-127-1-0

例6J2已知仅]补求小补

解:设M补

vI>[m补=0・一弘…弘

m补连同符号位在内,每位取反,末位加1

即得川补一

[-何补=1防灭…工+2"

<n>[口]补=1・y1^2・•・丁〃

仅]补连同符号位在内,每位取反,末位加1

即得[寸]补

[一.补=0•卜河・••五+2”

5.移码表不法

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

如十进制二进制补码

x=+21+101010,10101错

x=-21-101011,01011

x=+31+111110,11111错

x=-31-111111,00001大

x+25

+10101+100000=110101大正确

-10101+100000=001011

+11111+100000=111111大正确

-11111+100000=000001

(1)移码定义

[刈移=2〃+x(2n>x>2")

X为真值,〃为整数的应数、

移码在数轴上的表示

移码

区移=25+10100=1,10100

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

和数值位隔开

国移=2‘—10100=0,01100

(2)移码和补码的比较

设x=+1100100

国移=27+1100100=14100100

区补=0,1100100

设x=-1100100

区移=27—1100100=0,0011100

[刈补=1,0011100

补码与移码只差一个符号位

⑶真值、补码和移码的对照表

国补M移对应的

真值x(〃=5)移十进制整数

-1000001000000000000

-111111000010000011

-11110100010000010\2

•••

■•■•*

-00001111111011111

±00000000000100000r*

+0000100000110000133

+0001000001010001034

•••

■•*■•6:

+11110011110111110

+1111101111111111163

(4)移码的特点

A当x=0时[+0]移=2§+0=1,00000

[一0]移=25—0=1,00000

,[+0]移=[—0]移

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

[—100000]移=25-100000=000000

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

用移码表示浮点数的阶码1

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

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

小数点按约定方式标出

、定点表不

SfS1S2…或SfSS2…

数数

数值部分数值部分

符符

小数点位置小数点'位置

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

原码-(1-2”)〜+(1-2~n)—(2〃—1)〜+(2〃—1)

补码-1^+(1-2~n)_2〃~+(2f)

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

浮点表示

N=Sxri数的一般形式

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

计算机中r取2、4、8、茄等、

当r=2N=11.0101二二进制表不

/=0.110101X2回了规格化数

=1.10101X21

=1101.01X210

0.00110101X2100

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

j整数、可正可负)

1.浮点数的表示形式

j阶码S尾数

JfjJiSfS1S2

阶数4

阶码的尾数的数值部分

符数值部分符

小数点位置

Sf代表浮点数的符号

其位数反映浮点数的精度

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

jf和m共同表示小数点的实际位置

2.浮点数的表示范围

上溢阶码,最大阶叫

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

上溢上溢

负数区下溢正数区

0

最小负数最大正数

_2(2WM)X(1-2-«)2(2J)X(1—2一〃)

最小正数

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

2-(2J)X2f

2T5X2-10

最大负数设股=4

-2-(2J)x2fn=10

-2-15XV10

练习

设机器数字长为243献表示±3万的十进制

数,试问在保证数的最大精度M前起下,除阶符、数

符各取1位外,阶码、尾数各取几

解:•••214=16384215=32768

/.15位二进制数可反映±3万之间的十进制数]

20XO.xxx•••xxx

I'~访z.

m=4,5,6,…

满足最大精度可取帆=4,n=lS

3.浮点数的规格化形式

r=2尾数最高位为1、

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

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

4.浮点数的规格化I

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

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

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

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

左规尾数左移3位,阶码减1\

r=8

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

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

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

例如:设股=4,n=10,r=2

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

1510

最大正数2+U11X0.1\_11_1_111_1_1_1J=2X(l-2-)

10

最小正数21111X0.1000000000=2-15*2-1=2*

9得

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

vyz\

9个0

最小负数2+uiiX(-041111111111=-215X(l-2-10)

Y

10个1

三、举例

为;13将+嗡写心进定点数、浮点数及在定点

机和浮点机中的机器数形式。其中数值部分均取10位

数符取1位,浮点数阶码取5位"1位阶符)。

解:设*=+嗡■

二进制形式x=0.0010011

定点表示X=0.0010011000

浮点规格化形式X=0.1001100000X210

定点机中四原=四补=[刈反=0.0010011000

浮点机中田原=1,0010;0.1001100000

[刈补=1,1110;0.1001100000

[刈反=1,1101;0.1001100000

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

并写出它在定点机和浮点机中的三种机器数及阶码

为移码、尾数为补码的形式(其他要求同上例)。

解:设x=-58

二进制形式x=-111010

定点表示x=-0000111010

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

定点机中浮点机中

[汨原=1,0000111010[x]原=0,0110;1.1110100000

[x]补=1,1111000110[x]补=0,0110;1.0001100000

[x]反=1,1111000101区反=0,0110;1.0001011111

[%1阶移、尾补=1,0110;1.0001100000

例6.15写出对应下图所示的浮点数的补码

形式。设〃=10,m=4,阶符、数符各取1位。

上溢上溢

负数区下溢正数区

最小负数0I最大正数

最小正数

—2(2J)X(1—2一")2(2"T)X(1—2-〃)

2-(2"J)X2~n

最大负数

-2-(2"J)x2T

解:真值补码

最大正数215X(l-2-10)04111;o.iiiiiiiiii

最小正数2"15X2"101,0001;0.0000000001

最大负数—2一15X2-101,0001;1.1111111111

最小负数-215X(l-2-10)0,1111;1.0000000001

机器零

>当浮点数尾数为0时:还论其阶码为何值

按机器零处理

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

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

如股=4n=10

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

x,xxxx;0.00・・・0

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

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

0,0000;0.00・・・0

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

四、IEEE754标准

s阶码(含阶符)尾数

数符小数点位置

尾数为规格化表示

非“0”的有效位最高位为“1"(隐含)

符号位s阶码尾数总位数

短实数182332

长实数1115264

临时实数1156480

6.3定点运算

1移位运算

1.移位的意义

15•m=1500・cm\

小数点右移2位

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

(小数点不动)

左移绝对值扩大W

右移绝对值缩小■

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

2.算术移位规则

符号位不变

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

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

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

解:A=+26=+11010\

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

机器数对应的看值

移位操作

[4]原=[4]补=[4]反

移位前0,0011010+26

左移一位0,0110100+52

左移两位0,1101000+104

右移一位0,0001101+13

右移两位0,0000110+6

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

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

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

解:/=—26=—11010k

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

移位前1,0011010-26

左移一位1,0110100-52

左移两位1,1101000-104

右移一位1,0001101-13

右移两位1,0000110-6

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

移位前1,1100110-26

左移一位1,1001100-52

左移两位1,0011000X-104

右移一位1,1110011-43

右移两位1,1111001-7

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

移位前1,1100101-26

左移一位14001011-52

左移两位1,0010111-104

右移一位1,1110010-13

右移两位1,1111001-6

3.算术移位的硬件实现

中-口«中曰5曰中曰

0001

------>一

0

(a)真值为正(b)负数的原码(c)负数的补码(d)负数的反码

丢1出错出错正确正确

丢1影响精度影响精度影响精度正确

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

算术移位有符号数的移位

逻辑移位无符号数的移位

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

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

例如0101001110110010

逻辑左移10100110逻辑右移01011001

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

高位1移丢

01010011司110100117

二、加减法运算

1.补码加减运算公式

(1)加法X.

整数[对补+回补=m+用补(mod2y-,

小数⑷补+回补=因+5]补(mod2)

(2)减法

A-B=A+(-B)

整数[A-用补=[A+(-B)]补=[Z]补+[-用补(mod2n+1)

小数3叫补=[/+(-')]补=3]补+[一耳补(mod2)

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

2.举例

例6.18设N=0.1011,5=-0.0101

求3+£]补验证

解:⑷补=0.1011

0.1011

+出]补=1.1011一0.0101

⑷补+田]补0.0110

mlp.0110=[Z+5]补

:.A+0.0110

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

求[A+B]补验证

解:⑷补,=1,0111

-1001

+出]补,=1,1011+-0101

[同补+田]补-1110

=)11,0010=3+4]补

:.A+=-1110

例620设机器数字长为8位(含1位符号位)

且4=15,5=24,用补码求N—£

解:A=15=0001111

£=24=0011000

[同补=0,0001111田]补=0,0011000

+[——]补=1,1101000\、

网补+[-孙卜=1,1110111=[A-孙卜

:.A-B=-1001=-9

练习1设工=告y=毛,用补码求x+y

x+y=-0.1100=一一错

练习2设机器数字长为8位(含1位符号位)\

且/=—97,B=+41,用补码求力—£

^-5=+1110110=+118错

3.溢出判断

(1)一位符号位判溢出

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

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

数的符号不同,即为溢出

硬件实现

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

如"0=1]

卜有溢出

0㊉1=1.

0㊉0=0]

F无溢出

1㊉1=0.

(2)两位符号位判溢出

x1>x>0

[划补,

4+x0>x>-1(mod4)

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

比一丁]补,=[刈补,+[-川补,(mod4)

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

11,xxxxx

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

01fxxxxx

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

4.补码加减法的硬件配置

A、X均〃+1位

用减法标记Gs控制求补逻辑

三、乘法运算

1.分析笔算乘法

71=-0.1101B=0.1011

^XB=-0.10001111乘积的符号心算求得

0.1101

X0.1011符号位单独处理

1101乘数的某一位决定是否加被乘数

1101

?

00004个位积一起相加

1101乘积的位数扩大一倍

0.10001111

2.笔算乘法改进

0.1011

=0.1A+0.00T4+0.00+0.000L4

=0.1A+0.00/+0.001(/+0.L4)

=0.L4+0.01[0-^+0.1(A+0.L4)]

右移一位一=0*1{/+°」[°・/+0・1(力+0・1力)]}

、2”|{4+2“[0•A+2\A+2/(4+0))]}

第一步被乘数z+o

第二步右移一位,得新的部分积②

第三步部分积+被乘数

第八步右移一位,得结果

3.改进后的笔算乘法过程(竖式)

部分积乘数说明

0.0000Ton州态,部分积=0

+0,1101乘数为1,加被乘数

0.1101

0.01101101一1,形成新的部分积

+0.1101乘数为1,加被乘数、

1.00111

0.10011110一1,形成新的部分积

+0.0000乘数为0,加0

0.100111

0.0100mi一1,形成新的部分积

+0.1101乘数为1,加被乘数

1.0001in

0.1000mib得结果

小结

>乘法运算可用加和移船吸

〃=4,加4次,移4次

>由乘数的末位决定被乘数是否与原部分积相加,

然后一1位形成新的部分积,同时乘数一1位

(末位移丢),空出高位存放部分积的低位。

>被乘数只与部分积的高位相加

硬件3个寄存器,具有移位功能

1个全加器

4.原码乘法

⑴原码一位乘运算规则

以小数为例

设[x]原—*()•%遇2X"

m原yn

比•“原=*0㊉%)・(0・Xxx2…居)(0…")

=(网邮))・x*y*

式中x*=0.xrx2•••xw为x的绝对值

y*=0.JM…典,为y的绝对值

乘积的符号位单独处理与㊉外

数值部分为绝对值相乘X*

⑵原码一位乘递推公式

=X*(0JLF2・・•")

=廿。2】+%2-2+...+稣2-,

AA

=2(y1x*+2(y2x*+…2”(p/*+0)•••))

1

z0=0

Zi=2/e/*+zo)

Z2=2-I(F»IX*+ZI)

z”=Aek+zQ

例6.21已知*=snioj;=0.1101求比・切原

、—

解:立15

口数说明

0.00001101部分积初态Zo=O

+0.1110+x*

.1110

逻辑右移

.01110110一1,得©

+0,0000+0

0.01110

逻辑右移

>0.00111011-1,得向

+0.1110+x*

---------.1.000110

逻辑右移

.10001101一1,得Z3

+0.1110

.0110110

逻辑右移

.10110110一1,得Z4

例621结果

①乘积的符号位/㊉外飞㊉0=1

②数值部分按绝对值相乘

=0.10110110

贝I[比•川原=1.10110110

特点绝对值运算

用移位的次数判断乘法是否结束

逻辑移位

⑶原码一位乘的硬件配置

温馨提示

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

评论

0/150

提交评论