版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2023/2/6第2章:计算机中信息的表示及其运算2023/2/6第2章:计算机中信息的表示及其运算2.1进位计数制2.2机器内数据及符号的表示方法2.3微型计算机的数据类型2.4数的运算方法2023/2/62.1进位计数制512=5*102+1*101+2*100系数基值权数2023/2/62.1.1概述基本概念基值:一种计数制允许选用基本数字符号(数码)的个数叫基数进位计数制又称为“以基值为进位的计数制”,基值为十叫十进制,基值为二叫二进制,基值为八叫八进制…….权数:一个数字符号处在不同位时,它所代表的数值是不同的。每个数字符号所表示的数值等于该数字符号值乘以一个与数码所在位有关的常数,这个常数叫做“位权”,简称“权”
,等于基值的幂系数:数值N中各位置上的数码2023/2/6进位计数制的表示方法假设有一个r
进制的数值N
N=(dn-1dn-2……d1d0.
d-1……d-m)rN=dn-1rn-1
+
dn-2rn-2
+
……d1r1
+
d0r0
+
d-1r-1
+
……+d-mr-m
r:基值,ri:权数,di:系数.
m,n:正整数,分别表示小数位和整数位2023/2/6例2-1-1(43863.57)十=4*104+3*103
+8*102
+6*101+3*100+5*10-1
+7*10-22023/2/6二进制(Binary)权数:2n-1,2n-2…………可用数码:0,1基值:r=2区分标志:在数字的末尾加上一个字母B
例如:331.25=101001011.01B注:十进制数的区分标志是在数字的末尾加上一个字母
D。但是这个标志通常省略。2023/2/6十进制二进制十进制二进制00000501011000160110200107011130011810004010091001十进制和二进制之间的对应关系2023/2/6例2-1-2=1*28+1*27+1*26+1*25+0*24+0*23+1*22+1*21+0*20(111100110)二2023/2/6二进制数的优缺点优点二进制数便于物理元件的实现二进制数运算简单二进制数使用器材少便于实现逻辑运算缺点代码冗长不便阅读2023/2/6八进制(Octal)和十六进制(Hexadecimal)八进制权数:8n-1,8n-2,………可用数码:0,1,2,3,4,5,6,7。基值:r=8区分标志:在数字的末尾加上一个字母O
例如:331.25=513.2O2023/2/6十进制和八进制之间的对应关系十进制八进制十进制八进制0066117722810339114410125511132023/2/6例2-1-3(647.32)八=6*82+4*81+7*80
+3*8-1+2*8-2=(423.40625)十2023/2/6十六进制(Hexadecimal)权数:16n-1,16n-2,…………可用数码:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F基值:r=16区分标志:在数字的末尾加上一个字母
H
例如:331.25=14B.4H2023/2/6十进制十六进制十进制十六进制十进制十六进制006612C117713D228814E339915F4410A16105511B1711十进制和十六进制之间的对应关系2023/2/62.1.2不同计数制之间的转换各种数制转换成十进制1.按“权”
转换法例2-1-4
:将11011.11B
转换成十进制数解:(11011.11)二
=1*24+1*23+0*22+1*21+1*20
+1*2-1+1*2-2
=16+8+0+2+1+0.5+0.25=27.75D2.基值重复相乘(相除)法2023/2/6例2-1-5将732.6O转换成十进制数解:
732.6O
=7*82+3*81+2*80+6*8-1=448+24+2+0.75=474.752023/2/62.基值重复相乘(相除)法整数部分用基值反复相乘小数部分用基值反复相除设N
是一个四位的二进制整数
N=d323+d222+d121+d020=(d322+d221+d1)*2+d0=[(d3*2+d2)*2+d1]*2+d02023/2/6运算步骤从最高位开始,将最高位乘以2,加上次高位,令结果为M1M1乘以2,加上第三位,令结果为M2M2乘以2,加上第四位,令结果为M3,按这种方法一直运算下去,加到最低位为止最后,所得到的结果就是转换的结果2023/2/6例2-1-6将101101B
转换成十进制数解:M1=1*2+0=2
M2=2*2+1=5
M3=5*2+1=11
M4=11*2+0=22
M5=22*2+1=45
101101B
=452023/2/6小数部分用基值反复相除设N
为四位的二进制小数则N=d-12-1+d-22-2+d-32-3+d-42-4=2-1{d-1+2-1[d-2+2-1(d-3+2-1d-4)]}2023/2/6运算步骤从最低位开始,将最低位除以2,加上次低位,令结果为R1R1除以2,加上第三低位,令结果为R2R2除以2,加上第四低位,令结果为R3,一直进行到小数点左边的0为止所得到的十进制小数就是转换的结果2023/2/6例2-1-7将N=0.1011B转换为十进制小数解:R1=(1/2)+1=1.5
R2=(1.5/2)+0=0.75
R3=(0.75/2)+1=1.375
N=(1.375/2)+0=0.68750.1011B
=0.68752023/2/6例2-1-8将N=632.43O转换为十进制数。解:(1)整数部分
632
M1=6*8+3=51
N整
=51*8+2=410632.43O=410.546875
(2)小数部分
0.43
R1=(3/8)+4=4.375
N小
=(4.375/8)+0=0.5468752023/2/6将十进制数转换成其它进位制数将十进制数转换成r
进制数整数部分的转换小数部分的转换采用基值r反复除的“除基取余法”采用基值r反复乘的“乘基取整法”2023/2/6例2-1-9
求十进制数43
的二进制表示解:除以2商Qi
得余数di
43/221d0=1
21/210d1=1
10/25d2=0
5/22d3=1
2/21d4=0
1/20d5=1
低高逆向取余数得:43D=101011B2023/2/6例2-1-10
求0.6875
的二进制小数值解:乘以2得小数Fi
取整数di
0.6875*21.3750d-1=1
0.3750*20.7500d-2=0
0.7500*21.5000d-3=1
0.5000*21.0000d-4=1低高即0.6875D=0.1011B如果小数Fi永远不为0,怎么办?2023/2/6例2-1-11求0.423的二进制小数值(精度为2-5)?解:乘以2得小数Fi
取整数di
0.423*20.846d-1=0
0.846*21.692d-2=1
0.692*21.384d-3=1
0.384*20.768d-4=0低高即0.423D=0.01101B
0.768*21.536d-5=1
Stop2023/2/6将十进制转换成其它进位制数例2-1-12将0.6328125D
转换成八进制数解:乘以8得小数Fi
取整数di
0.6328125*85.0625000d-1=5
0.0625000*80.5000000d-2=0
0.5000000*84.0000000d-3=4
低高即0.6328125
=0.504O2023/2/6例2-1-13将(3952)十转换成十六进制数解:除以16商Qi
余数di
3592/16247d0=0
247/1615d1=7
15/160d2=F低高逆向取余数得:
3952
=F70H2023/2/6二进制与八进制、十六进制数之间的转换二进制八进制三位二进制数相当于一位八进制数。1101110010.0110010100021562.312O6513122023/2/6例2-1-14
101000111001B5071=5071O2023/2/6二进制十六进制四位二进制数相当于一位十六进制数。1101110010.0110010100372.65H273652023/2/6例2-1-15
将二进制数转化为十六进制数。
101001001000B
A48=A48H2023/2/6真值与机器数真值:用“+”,“-”来表示二进制数的符号“正”、“负”机器数:用“0”,“1”来表示二进制数的符号“正”、“负”01011符号数值部分小数点位置11011符号数值部分小数点位置2.2机器内数据及符号的表示方法2023/2/6数据编码根据用途不同:原码、补码、反码为了方便人机交互有权码:8421码、2421码、5421码……无权码:余3码、格雷码……检错能力的编码:奇偶校验码、五中取二码纠错能力的编码:汉明码、倍数正误码数字、字母、字符编码:ASCII码、EBCDIC码、汉字编码2023/2/6带符号数与不带符号数0000000011111111数值位8位不带符号数表数范围:0----2552.2.1数的符号与小数点的表示00000001000000100000001111111110…………..2023/2/6带符号数与不带符号数表数范围:0----127带符号数0000000001111111数值位符号位表数范围:-1-----1272.2.1数的符号与小数点的表示1000000111111111数值位符号位带符号数2023/2/616位的无符号数表数范围是:0~65535有符号数的表示范围:-32765~+327652023/2/6定点与浮点表示定点数纯小数:小数点固定在符号位之后,如1.1010111,此时机器中所有的数都是小数。纯整数:小数点固定在最低位之后,如11010111.,此时机器中所有的数都是整数。SfS1S2S3S4符号数值部分小数点位置SfS1S2S3S4符号数值部分小数点位置2023/2/6带符号的数符号数字化的数+0.10110
1011小数点的位置+11000
1100小数点的位置–
11001
1100小数点的位置–0.10111
1011小数点的位置真值机器数机器数与真值有符号数的定点数2023/2/6浮点表示法为什么要用浮点表示法计算机处理的数据不一定是纯小数或者纯整数。有些数据的数之范围相差很大,不能用定点小数或者定点整数表示,但均可用浮点整数表示。如:电子的质量9*10-28克352.47=3.5247*102=3524.7*10-1=0.35247*103…2023/2/6数学表示N=S*rjr
:基值j:r的指数(阶值)S:N的有效数字
N=S*2jj
:r=2的指数(阶值)
S:浮点数的尾数对二进制而言:2023/2/6
N=11.0101=0.110101*210
=1.10101*201
=1101.01*2-10
=0.00110101*2100
……………10,01,-10,100
表示的是什么?注意:这是二进制的表示方式,基数为2,有效数字和阶值都要用二进制表示2023/2/6浮点数的表示形式jfj1j2j3…jmSfS1S2S3S4S5S6S7…Sn阶符阶值尾符尾数尾数:表示了数的精度,位数越多,精度越高阶值:表示了数的表示范围,位数越多,表示范围越大2023/2/6机器字长一定,如何提高浮点数的表示精度?0.000010101如何用最少的位数获得更多的有效数字?规格化2023/2/6规格化数非规格化数
如果尾数的第一位数字是1时,该数即是规格化的数。例如:1.10101110.1010001
如果尾数的第一位数字是0时,该数即是非规格化的数。例如:1.001010111
0.0010100010.1<|S|<12023/2/6例2-2-1将N1=11.0101
表示成规格化的浮点数。例2-2-2将N2=0.00110101
表示成规格化的浮点数。00100110101解:N1=11.0101=0.110101*210解:N2=0.00110101=0.110101*2-10尾数取6位,阶值取3位,阶符和尾符各取1位101001101012023/2/6定点表示法与浮点表示法的比较1.数的表示范围假设机器的字长为8位SfS1S2S3S4S5S6S7小数定点机浮点机jfj1j2SfS1S2S3S4±(
0.0000001----0.1111111)
±(1/128-----127/128)±(
0.1000*2-11---0.1111*2+11)±(
1/16-----7(1/2))浮点数的表示范围要远远大于定点数的表示范围2023/2/62.数的精度浮点数为规格化数时,它的精度远大于定点数的精度3.数的运算定点数:运算速度快.浮点数要对尾数和阶码分别进行运算,而且运算结果要求规格化,所以运算步骤较多,运算速度不如定点数快.2023/2/64.溢出处理定义:数值大小超出了机器所能表示数的范围,叫做溢出(Overflow)。定点数:对本身数值进行判断。如小数定点机中的数的绝对值必须小于1,否则为“溢出”浮点数:主要对阶码进行判断。2023/2/6通过阶码来判断“溢出”,下溢:当浮点数阶码小于最小阶码时,称为“下溢”,这时,溢出的数的绝对值很小,机器按0
处理(机器零)。此时机器可以继续运行。上溢:当浮点数阶码大于最大阶码时,称为“上溢”,此时机器停止运算,进行溢出中断处理。2023/2/6最大正数=215×(1–2–10)
2+1111×0.111111111110个1最小正数最大负数最小负数=2–15×2–1
=–215×(1–2–10)=2–16=–2–15×2–1
=–2–162-1111×0.10000000009个02-1111×(–0.1000000000)9个02+1111×(–0.1111111111)10个1例2-2-3
:设m=4,n=10求尾数规格化后的浮点数表示范围?2023/2/6小结:浮点数的表示范围–2(2m–1)×(1
–
2–n)–2–(2m–1)×2–n2(2m–1)×(1
–
2–n)2–(2m–1)×2–n最小负数最大负数最大正数最小正数负数区正数区下溢0上溢上溢–215
×(1
–
2-10)
–2-15
×2-10
2-15
×2-10
215
×(1
–
2-10)
设m=4
n=10上溢阶码>最大阶玛下溢阶码<最小阶码按机器零
处理2023/2/61.原码(机器数)为了表示数的符号,可在数的最高位之前增设一位符号位,符号位为0表示正数,符号位为1表示负数,这样规定的二进制码被称为原码。例如:(假设机器字长为8位)X1=+1011010则[X1]原
=01011010X2=-1011010则[X2]原
=110110102.2.2原码、补码和反码2023/2/6整数的原码数学表示
0,x,0≤x<2n-1[x]原
=2n-1–x,-2n-1<x≤0其中:x为真值,n为机器字长。例2-2-4.假设机器字长为四位,求x的原码?x=+101[x]原
=0101
x=-101[x]原
=24-1–(-101)=1000–(-101)=11012023/2/6小数的原码数学表示
x,0≤x<1[x]原
=1–x,-1<x≤0其中:x为真值例2-2-5:求x的原码?x=+0.1010[x]原
=0.1010x=-0.0011[x]原
=1–(-0.0011)=1+0.0011=1.00112023/2/6例2-2-6:已知x=0.0000,求[x]原[+0.0000]原
=0.0000[-0.0000]原
=1–(-0.0000)=1.0000在原码表示法中,+0.0000和–0.0000的值不同小数的原码数学表示
x,0≤x<1[x]原=1–x,-1<x≤0其中:x为真值2023/2/62.补码操作种类A的符号B的符号实际操作结果符号|A|>|B||A|<|B|加正正加正正正负减正负负正减负正负负加负负减正正减正负正负加正正负正加负负负负减负正2023/2/6(1)补的概念
时钟逆时针-363顺时针+9615-123可见3可用+9代替记作3≡+9(mod12)同理4≡+8(mod12)5≡+7(mod12)
时钟以
12为模减法加法称+9是–3以12为模的补数2023/2/6补码的实例
计数器(模16)–101110110000+010110111000010110000?可见1011可用+0101代替记作1011≡+0101(mod24)同理011≡+101(mod23)0.1001≡+1.0111(mod2)自然去掉2023/2/6(2)结论
2.一个负数加上
“模”
即得该负数的补数。1.两个互为补数的数它们绝对值之和即为模
数。3.正数的补数即为其本身。2023/2/6(3)补码(符号数字化的补数)整数x
为真值,n
为整数的位数。[x]补=0,x2n
>
x
≥02n+1+x0
>
x
≥2n(mod2n+1)如x=+1010[x]补=27+1+(1011000)=1000000001011000[x]补=0,1010x=10110001,0101000用逗号
将符号位和数值位隔开2023/2/6小数x
为真值。x=+0.1110[x]补=x1>
x
≥02+
x
0>
x
≥1(mod2)如[x]补=0.1110x=0.11000001.0100000[x]补=2+(0.1100000)=10.00000000.1100000用小数点
将符号位和数值位隔开2023/2/6(4)求补码的快捷方式=100000=1,011010101+1=1,0110又[x]原=1,1010则[x]补=24+11010=11111+11010=1111110101010当真值为负
时,补码
可用原码除符号位外每位取反,末位加1求得+1设x=1010时2023/2/6
举例解:x=+0.0001解:由定义得x=[x]补–2=1.0001–10.0000∴[x]原=1.1111例2-2-8:已知[x]补=1.0001求x?[x]补
[x]原
?由定义得例2-2-7:已知[x]补=0.0001求x?∵x=0.1111
–=0.1111
–对于负
的小数,原码
可用补码除符号位外,每位取反,末位加1求得。2023/2/6例2-2-9:解:x=[x]补–24+1
=1,1110–100000[x]原=1,0010对于负
的整数,原码
可用补码除符号位外每位取反,末位加1求得[x]补
[x]原
?∵
x=0010=0010求x?已知[x]补=1,1110由定义得2023/2/6真值0,10001101,01110100.11101.00100.00000.00001.00000,10001101,10001100.11101.11100.00001.0000不能表示练习求下列真值的补码x=+70x=0.1110x=0.0000x=–70x=0.1110x=0.0000x=1.0000[1]补=2+x=10.00001.0000=1.0000[+0]补=[0]补由小数补码定义[x]补=x1>
x
≥02+
x0>
x
≥
–1(mod2)=1000110=–1000110[x]补[x]原2023/2/63.反码末位不用加1的补码整数[x]反=0,x2n>x≥0(2n+1–1)+x0≥x>2n(mod2n+1
1)如x
=+1101[x]反=0,1101=1,0010x=1101[x]反=(24+11)1101=111111101用逗号
将符号位和数值位隔开x
为真值n
为整数的位数2023/2/6小数x=+0.1101[x]反=0.1101x=0.1010[x]反=(22-4)0.1010=1.11110.1010=1.0101如[x]反=x1>x≥0(2–2-n)+x0≥x>1(mod22-n)用小数点
将符号位和数值位隔开x
为真值2023/2/6举例例2-2-12:求0的反码设x=+0.0000x=–0.0000[+0.0000]反=0.0000[–
0.0000]反=1.1111∴[+0]反≠[–0]反
解:同理,对于整数[+0]反=0,0000[–0]反=1,1111例2-2-11:已知[x]反=1,1110求x?由定义得x=[x]反–(24+1–1)=1,1110–11111=–0001例2-2-10:已知[x]反=0,1110求x?解:由定义得x=+1110解:2023/2/6例2-2-13:000000000000000100000010…011111111000000010000001111111011111111011111111…128129-0-1-128-127-127-126二进制代码无符号数对应的真值原码对应的真值补码对应的真值反码对应的真值012127…253254255…-125-126-127…-3-2-1…-2-1-0…+0+1+2+127…+0+1+2+127…+0+1+2+127…+0设机器数字长为8位(其中一位为符号位)对于整数,当其分别代表无符号数、原码、补码和反码时,对应的真值范围各为多少?2023/2/6例2-2-14:解:已知[y]补求[y]补<Ⅰ>[y]补=0.y1
y2
yn…y
=0.
y1y2
yn…y=0.y1
y2
yn…[y]补=1.y1
y2
yn+2-n…<Ⅱ>[y]补=1.y1
y2
yn…[y]原=1.y1y2
yn+2-n…
y=(0.y1y2
yn
+2-n)…
y=0.y1y2
yn+2-n……[y]补=0.y1
y2
yn+2-n设[y]补=y0.y1y2
yn…每位取反,即得[y]补[y]补连同符号位在内,末位加1每位取反,即得[y]补[y]补连同符号位在内,末位加12023/2/6小结机器数的最高位是符号位,0为正,1为负。书写上用“,”(整数)或“.”(小数)将数值部分和符号位隔开。正数x,原码=补码=反码。负数x:符号位为1,[x]原:数值部分与真值绝对值相同[x]补:数值部分为将真值尾数逐位求反,最低位加1[x]反:尾数部分为将真值的尾数按位取反2023/2/62.2.3信息的编码方法1.BCD码(BinaryCodedDecimal)二进制表示的十进制数编码常用的BCD码为8421BCD码(每位十进制数用四位二进制数表示)3
4
转换为BCD码为:0011
01009
0
转换为BCD码为:1001
0000BCD码的用途可以表示数,并在计算机内直接参加运算BCD码可以在数的转换过程中,做中间表示2023/2/62.奇偶校验码作用:为了防止信息在存储及传输过程中发生错误而设置的附加码编码种类:奇校验:保证“1”的个数为奇数
010110101偶校验:保证“1”的个数为偶数
0101001012.2.3信息的编码方法2023/2/63.ASCII码(AmericanStandardCodeforInformationInterchange)目的:为了表示、传输打字机或键盘上面的所有符号ASCII码长7位,可表示128个符号,包括数字、英文字母(大写和小写)、34个专用字符和32个通用控制字符。最高位增加一位校验位,正好占一个字节。(汉字编码有机可乘)2.2.3信息的编码方法2023/2/6汉明码(具有检测及纠错能力的编码)循环冗余校验码(CRC码)2.2.3信息的编码方法2023/2/62.3微型计算机的数据类型字符型数据单字整数双字整数短实数(浮点数)长实数(双精度型浮点数)……2023/2/62.3.1带符号数与不带符号数的区别为了能够最大限度地扩大机器数的表示范围,PC机中的每一类数据类型都分为“带符号数”和“不带符号数”。一个数据是“带符号数”还是“不带符号数”,由机器指令来辨别。对于“带符号数”,其最高位为符号位,“0”代表正数,“1”代表负数。2023/2/62.3.2整数表示字符型整数S数值760单字整数S数值15140双字整数S数值
31300
对于不带符号数,上述符号位用于表示数值。2023/2/6整数类型数的表示范围类型带符号数无符号数字符型-128≤x<1270≤x≤255单字-32768≤x≤+327670≤x≤65535双字-2*109≤x≤+2*109-10≤x≤4*109-12023/2/62.3.3实数表示S偏移的阶码有效位短实数S偏移的阶码有效位长实数3130232208位63625251011位2023/2/6移码表示法补码表示很难直接比较其真值大小如十进制x=+21x=–21x=
+31x=–31x+25+10101+100000+11111+10000010101+10000011111+100000大大错错大大正确正确0,101011,010110,111111,00001+10101–
10101+11111–
11111=110101=001011=111111=000001二进制补码2023/2/6(1)移码定义x
为真值,n
为整数的位数移码在数轴上的表示[x]移码2n+1–12n2n
–1–2n00真值如x=10100[x]移=25+10100用
逗号
将符号位和数值位隔开x=–10100[x]移=25
–10100[x]移=2n+x(2n>x
≥2n)=1,10100=0,011002023/2/6(2)移码和补码的比较设x=+1100100[x]移=27+1100100[x]补=0,1100100设x=–1100100[x]移=27
–1100100[x]补=1,0011100补码与移码只差一个符号位=1,1100100=0,001110010012023/2/6-100000-11111-11110-00001±00000+00001+00010+11110+11111……真值x(n
=
5)[x]补[x]移[x]移对应的十进制整数(3)真值、补码和移码的对照表……012313233346263……000000000010000001011111100000100001100010111110111111……011111011110000010000001000000111111100010100001100000-100000
±00000+111110000001111110000001000002023/2/6
当x=0时[+0]移=25+0[–0]移=25
–0∴[+0]移=[–0]移
当n=5时最小的真值为–25[–100000]移可见,最小真值的移码为全0(4)移码的特点用移码表示浮点数的阶码能方便地判断浮点数的阶码大小=1,00000=1,00000=–100000=000000=25–1000002023/2/62.4数的运算方法数的运算的种类算术运算逻辑运算与、或、非、异或2023/2/62.4.1数的逻辑运算逻辑非(求反)NOT国标符号国际符号运算规则AA0110AAAA2023/2/62.4.1数的逻辑运算例1,x=10110101,y=01100010,求其非?
NOTx=01001010
NOTy=100111012023/2/6逻辑加OR国标符号国际符号运算规则ABA∨B000011101111+ABA∨BABY(A∨B)2023/2/6例2,x=10110101,y=01100010。求xORy?
解:xORy=10110101OR01100010=111101112023/2/6逻辑乘AND国标符号国际符号运算规则ABA∧B000010100111ABA∧BABY(A∧B)2023/2/6例3,x=10110101,y=01100010。求xANDy?
解:xANDy=10110101AND01100010=001000002023/2/6逻辑异或(按位加)国标符号国际符号运算规则⊕ABA⊕BABA⊕B000011101110Y(A⊕B)AB2023/2/6例4,x=10110101,y=01100010。求xXORy
解:xXORy=10110101XOR01100010=110101112023/2/62.4.2数的算术运算一、移位运算(循环、逻辑、算术)1.移位的意义15米=1500厘米小数点右移2位机器用语15相对于小数点左移2位(小数点不动)..左移绝对值扩大右移绝对值缩小在计算机中,移位与加减配合,能够实现乘除运算2023/2/62.算术移位规则1右移
添1左移
添00反码补码原码负数0原码、补码、反码正数添补代码码制符号位不变2023/2/6例1设机器数字长为8位(含一位符号位),写出A=+26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。解:A=+26则[A]原=[A]补=[A]反=0,0011010
+60,0000110+130,0001101+1040,1101000+520,0110100
+260,0011010移位前[A]原=[A]补=[A]反对应的真值机器数移位操作1212=+110102023/2/6例2设机器数字长为8位(含一位符号位),写出A=–26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。解:A=–26
–61,0000110
–131,0001101–1041,1101000
–521,0110100
–261,0011010移位前对应的真值机器数移位操作1212原码=–110102023/2/6
–61,1111001
–131,1110010
–1041,0010111
–521,1001011–261,1100101移位前对应的真值机器数移位操作1212
–71,1111001
–131,1110011
–1041,0011000
–521,1001100–261,1100110移位前对应的真值机器数移位操作1212补码反码2023/2/63.算术移位的硬件实现(a)真值为正(b)负数的原码(c)负数的补码(d)负数的反码000100丢1丢1出错影响精度出错影响精度正确影响精度正确正确2023/2/64.算术移位和逻辑移位的区别算术移位有符号数的移位逻辑移位无符号数的移位逻辑左移逻辑右移低位添0,高位移丢高位添0,低位移丢例如01010011逻辑左移10100110逻辑右移01011001算术左移算术右移0010011011011001(补码)00101100102023/2/6二、加减法运算1.补码加减运算公式(1)加法(2)减法整数
[A]补+[B]补=[A+B]补(mod2n+1)小数[A]补+[B]补=[A+B]补(mod2)A–B=A+(–B)整数
[A
–B]补=[A+(–B)]补=[A]补+[
–
B]补(mod2n+1)小数
[A
–B]补=[A+(–B)]补(mod2)连同符号位一起相加,符号位产生的进位自然丢掉=[A]补+[
–
B]补2023/2/62.举例解:[A]补[B]补[A]补+[B]补+=0.1011=1.1011=10.0110=[A+B]补验证例3设A=0.1011,B=–
0.0101求[A+B]补0.1011–0.01010.0110∴[A+B]补=0.0110[A]补[B]补[A]补+[B]补+=1,0111=1,1011=11,0010=[A+B]补例4设A=–9,B=–5.求A+B?解:∴A+B
=–1110B=-142023/2/6例5设机器数字长为8位(含1位符号位)且A=15,B=24,用补码求A
–B解:A=15=0001111BB=24=0011000B[A]补+[–
B]补+[A]补=0,0001111[–
B]补=1,1101000=1,1110111=[A
–
B]补[B]补=0,0011000练习1设x=y=用补码求x+y9161116x+y=–0.1100B=1216–练习2设机器数字长为8位(含1位符号位)且A=–97,B=+41,用补码求A–BA
–B=+1110110B=+118∴A
–B=–1001B=–9错错2023/2/63.溢出判断(1)单符号位判溢出参加操作的两个数(减法时即为被减数和“求补”以后的减数)符号相同,其结果的符号与原操作数的符号不同,即为溢出硬件实现最高有效位的进位符号位的进位=1符号位为0,若它吸收了最高有效位的进位,而没有继续向前传递,则由0变为1,所以溢出。溢出符号位为1,若没有最高有效位的进位,而自己向前产生进位,由1变为0,所以溢出。2023/2/6A0B01-bitALUResult0CarryIn0CarryOut0A1B11-bitALUResult1CarryIn1CarryOut1A2B21-bitALUResult2CarryIn2A3B31-bitALUResult3CarryIn3CarryOut3OverflowXYXXORY0000111011102023/2/62.4.2数的算术运算例2-4-1A=0.1011B=-0.0101,求[A+B]补解:[A]补
=0.1011[B]补
=1.1011[A]补
+[B]补
=0.1011+1.1011
丢掉1
0.0110[A+B]补=0.01102023/2/6例2-4-2.A=-0.1001,B=-0.0101,求[A+B]补解:[A]补
=1.0111[B]补
=1.1011[A]补
+[B]补
=1.0111+1.1011
丢掉1
1.0010[A+B]补
=1.00102023/2/6(2)双符号位判溢出[x]补'
=
x1>x≥04+x0>x≥–1(mod4)[x]补'+[y]补'=[x+y]补'(mod4)[x
–y]补'=[x]补'+[–
y]补'(mod4)结果的双符号位相同
未溢出结果的双符号位不同
溢出最高符号位
代表其真正的符号00.×××××11.×××××10.×××××01.×××××00,×××××11,×××××10,×××××01,×××××2023/2/6双符号位的加减运算解:[A]补
=11.0101[B]补
=11.1001[A]补
+[B]补
=11
.0101+11.1001
丢掉1
10.1110例2-4-3已知A=-11/16,B=-7/16,求[A+B]补符号位不同,溢出2023/2/6解:[A]补
=00.1011[B]补
=00.0111[A]补
+[B]补
=00
.1011+00.0111
01.0010例2-4-4已知A=11/16,B=7/16,求[A+B]补符号位不同,溢出2023/2/6
补码定点加减法的硬件配置0An加法器(n+1位)0Xn溢出判断VGAGs求补控制逻辑2023/2/62.定点乘除运算分析笔算乘法A=–0.1101B=0.1011A×B=–0.100011110.11010.101111011101000011010.10001111符号位单独处理乘数的某一位决定是否加被乘数4个位积一起相加乘积的位数扩大一倍×乘积的符号心算求得
?(1)原码1位乘法2023/2/6笔算乘法改进A
•B=A
•0.1011=0.1A+0.00A+0.001A+0.0001A=0.1A+0.00A+0.001(A+0.1A)=0.1A+0.01[0•
A+0.1(A+0.1A)]=0.1{A+0.1[0•
A+0.1(A+0.1A)]}=2-1{A
+2-1[0•
A+2-1(A
+2-1(A+0))]}①②⑧第一步被乘数A
+0第二步
1,得新的部分积第八步
1,得结果③第三步部分积
+
被乘数…右移一位2023/2/6改进后的笔算乘法过程(竖式)0.00000.11010.11010.11010.00000.1101初态,部分积=0乘数为1,加被乘数乘数为1,加被乘数乘数为0,加01.001110.1001111.0001111乘数为1,加被乘数0.100011111,得结果1011=0.01101,形成新的部分积1101=0.10011,形成新的部分积1110=0.01001,形成新的部分积1111=部分积乘数说明2023/2/6小结
被乘数只与部分积的高位相加
由乘数的末位决定被乘数是否与原部分积相加,然后1形成新的部分积,同时乘数1(末位移丢),空出高位存放部分积的低位。硬件3个寄存器,具有移位功能一个全加器
乘法
运算加和移位。n=4,加4次,移4
次2023/2/6原码一位乘运算规则以小数为例设[x]原=x0.x1x2
xn…[y]原=y0.y1y2
yn…=(x0
y0).x*y*[x
•y]原=(x0
y0).(0.x1x2
xn)(0.y1y2
yn)……式中x*=0.x1x2
xn
为x
的绝对值…y*=0.y1y2
yn
为y
的绝对值…乘积的符号位单独处理x0
y0数值部分为绝对值相乘x*•
y*2023/2/6原码一位乘递推公式x*•
y*=x*(0.y1y2
yn)…=x*(y12-1+y22-2++yn2-n)…=2-1(y1x*+2-1(y2x*+2-1(ynx*+0)))…z1znz0=0z1=2-1(ynx*+z0)z2=2-1(yn-1x*+z1)zn=2-1(y1x*+zn-1)………z02023/2/6例2-4-5已知x=–0.1110y=0.1101求[x•y]原解:数值部分的运算0.00000.11100.11100.00000.11100.1110部分积初态z0=0部分积乘数说明0.011101.0001101.01101100.101101101,得
z4逻辑右移逻辑右移1101=0.01111,得
z10110=0.00111,得
z21011=0.10001,得
z31101=2023/2/6②数值部分按绝对值相乘①乘积的符号位
x0
y0=10=1x*•
y*=0.10110110则[x
•
y]原
=1.10110110特点绝对值运算逻辑移位例2-4-5结果用移位的次数判断乘法是否结束2023/2/6原码一位乘所需的硬件配置0An0Qn0Xn加法器控制门移位和加控
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论