二进制数值数据的编码跟其运算算法.docx_第1页
二进制数值数据的编码跟其运算算法.docx_第2页
二进制数值数据的编码跟其运算算法.docx_第3页
二进制数值数据的编码跟其运算算法.docx_第4页
二进制数值数据的编码跟其运算算法.docx_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

二进制数值数据的编码与运算算法23 要求掌握:231原码、反码、补码的定义 二进制数据二进制表示的定点小数、定点整数、浮点数。 最常用的编码方法原码表示、补码表示、反码表示。 机器数一个数值数据的机内编码。 真值机器数所代表的实际值。 1 (请注意:定点小数的绝对值都是小于1的) 1 X 0?X1 X原= 1-X -1X?0 例题:请用原码表示X1=+0.1011 X2=0.1011 解:X1原=01011 (将+和小数点去掉) X2原=10.1011定点小数X X 原+0.XXX 0XXX 12n12n-0.XXX 1XXX 12n12n(2)原码的性质 ? 原码表示中,机器数的最高位是符号位,0代表正,1代表负,其它的都是数的绝对值。即X原=符号位+|X| ? 零有两种表示,即 +0.0原=00000 0.0原=10000 ? 原码表示的优点:在数的真值和它的原码表示之间的对应关系简单,相互转换容易,用原码实现乘除的运算规则简单。 ? 原码表示的缺点:原码实现加减运算很不方便,因此很少用。 3 X X 0?X1 X补= 2+X -1X?0 (mod 2) (mod 2,就是按2取模,即超过2的进位要丢掉。) 例题:请用补码表示X1=+0.1011 X2=0.1011 (教材P76) (4)补码的性质 ?机器数的最高一位是符号位,0代表正,1代表负。机器数和它的真值的关系是: X补=2*符号+X。 ?在补码表示中,0有惟一的表示,即+0.0补=0.0补=0000 (4) 是用机器数的最高一位代表符号,数值位是对负数值各位取反的表示方法。 定义: X 0?X1 X= 反-n-n (2-2)+X -1X?0 MOD(2-2) 反码的性质: ?在反码表示中,机器数的最高位为符号位,0代表正,1代表负,负数的机器数和它的真值之间的关系为: -n-n X=(2-2)+X) MOD(2-2) 反?在反码表示中,零有两个编码,即 +0.0反=00000 0.0反=11111 ?用反码实现算术运算不方便,0值又有两个编码,用得不很普遍。 5 编码方法 正数X X=+0.1011 负数X X=0.1011 X原 真值X 01011 符号位取反 11011 X反 真值X 01011 所有位取反 10100 X补 真值X 01011 取反码,末位+1 10101 将十进制数 (1)+107/128 (2)35/64化成二进制数,再写出各自的原码、反码、补码表示(符号位和数值位共8位)。 答案:(1)原、反、补码都是:01101011,(2)原码:11000110,反码:10111010,补码:10111001 2 可以认为整数是小数点被设置在最低一位数值位的右边,机器数的最高位仍被用作数的符号位。数值的表示范围,以及整数编码的取模值,都与表示一个数所用的二进制位数有关。 编码方法 正数X=+XXXn X=110100 负数X=XXXn X=110100 1212X原 |X|前加一位符号位0 0110100 |X|前加一位符号位1 1110100 X反 |X|前加一位符号位0 0110100 |X|各位取反,前加一位符号位1 1001011 X补 |X|前加一位符号位0 0110100 取反码,末位加1 1001100 X移 X补符号变反 1110100 X补符号变反 0001100 将十进制数 (1)52,(2)127化成二进制数,再写出各自的原码、反码、补码表示(符号位和数值位共8位)。 答案:(1)原码:10110100,反码:11001011,补码:11001100 (2)原码:11111111,反码:10000000,补码:10000001 3 浮点数格式 Ms E M 1位符号 n+1位阶码 m位定点小数形式的尾数 其中: ? 符号位为:0或1 ? n+1位阶码中,1位是阶码的符号,n位是阶码的位数 ? 尾数可以采用原码或补码等编码方式。 阶码的编码方法移码表示 (1)移码的定义 nnn+X 2?X2 X移=22A、只用于整数;B、最高一位为符号位,1代表正,0代表负;C、在移码表示中,0移=0移=10000;D、由X补得到X移的方法是变X补的符号为其反码。例: X=+1011,X补=01011,X移=11011 X=1011,X补=10101,X移=00101 232补码的加、减运算规则 X+Y补=X补+Y补 即:任意两数的补码之和等于该两数之和的补码。 例题:x=+0.1011,y=0.0101,用补码计算x+y XY=XY=X+Y 从Y求Y的法则是:所有位取反,最末位加1 例题:x=+0.1101,y=+0.0110,用补码求x-y (1)在定点小数机器中,数的表示范围为|x|1,在运算过程中如果出现大于1的现象,称为“溢出”。 结果大于机器所能表示的最大正数,称为“上溢”; 结果小于机器所能表示的最小负数,称为“下溢”。 2 双符号位法(又称“变形补码”或“模4补码”) 00.11.0110 例题:X=0.1011,Y=0.1001,用补码运算方法计算X+Y =?并判断结果是否溢出。 习题:(1)用补码计算X+Y,同时指出运算结果是否溢出。 X=0.11011 Y=0.10101 (2)用补码计算XY,同时指出运算结果是否溢出。 X=0.11011 Y=0.10011 P133 211 233 一、原码一位乘法 (1)设 X原=Xs X XXn 12Y原=Ys Y YYn 12X*Y=Xs(XXXn)*YYYn 1212(2)手工执行一位乘法的步骤: 01 1 0 1 * 01 0 1 1 1 1 0 1 1 1 0 1 0 0 0 0 1 1 0 1 01 0 0 0 1 1 1 1 1、依乘数每一位上的取值为1还是0,决定相加数取被乘数的值还是取零值; 2、相加数从乘数的最低位求起,逐位变高,然后将各个相加数逐个左移一位,最后一步一次求和。 3、符号位的正乘正、负乘负,乘积的符号为正;正乘负、负乘正,乘积的符号为负。 (3)机器实现以上步骤的困难与解决办法 1、很难实现多个数据同时相加连加,每次用相加数和上一次部分积相加 2、最后的乘积位数是乘数的两倍, 加数器的位数一般与寄存器相每求得一次部分积之后使其右移一位 同,不可能是它的两倍。 3、很难一次性确定乘数寄存器的乘数右移一位后,看最低一位的数 每一位是0还是1 (4)实现原码一位乘法运算的逻辑线路框图。教材P83 (5)计算机实现原码一位乘法的流程: X=01101 Y=01011 (教材P83 ) ?将高位部分积置0(包括双符号00); ?看乘数寄存器的最低位(是0或1),决定高位部分积加上被乘数或加上零(包括双符号位00); ?同时将乘数的最低位右移,高位部分积的最低位移至乘数寄存器的最高位; ?重复第?步,直至最后一个被乘数相加完; ?将最终的高位部分积的最低位作最后一次移动到乘数寄存器的最高位,同时乘数的最后一位移出; ?把高位部分积和乘数寄存器的数据左右拼装起来,得到乘积的数值部分; ?用异或运算求出符号,得出最后的值。 234 一、补码的乘法规则 XXXn,乘数Y=YYYYn,则有 1、设:被乘数X=X012012-1-2-nX*Y补=X补 * (Y+Y2+Y2+Y2) 012n对上式进行递推,得到下面的递推关系式: Z补=0 0-1Z补=2Z补+(Y-Y)X补 (Y=0) 10n+1nn+1-1Z补=2Z补+(Y-Y)X补 21nn-1? -1Z补=2Z补+(Y-Y)X补 nn-121Z补=Z补+(Y-Y)X补=X*Y补 n+1n10其中,Z补是指求解过程中的部分积。 i2、布斯公式 观察上面的关系式,开始时,Z补=0,然后每一步都是在前次部分积的基础上,由0Y-Y(i=0,1,2,n)决定对X补的操作,再右移一位,得到新的部分积。如此重复i+1in+1步,最后一步不移位,便得到X*Y补。 3、计算机实现上面的计算流程: 实现这种补码的乘法规则时,在乘数的最末位后面要增加一位补充位Y。开始时Y=0,由 n+1n+1YY判断第一步该怎么操作;然后再由YY判断第二步该怎么操作。因为每作一步要右移nn+1n-1n一位,故作完第一步后,YY正好移到原来YY的位置上。依此类推,所以每步都用YYn-1nnn+1nn+1位置判断,即是判断位。如果判断位YY=01,则Y-Y=1,做加操作;如果YY=10,则nn+1i+1inn+1Y-Y=-1,做减法,即做加-X补的操作;如果YY=11或00,则Y-Y=0,Z加0,i+1inn+1i+1ii即保持原值不变。 4、补码的右移 所有位(连同符号符号位)向右移,符号位保持不变。 5、补码一位乘法的运算规则(开始时Y=0) n+1(1)如果Y=Y,部分积Z加0,再右移1位; nn+1i(2)如果YY=01,部分积加X补,再右移1位; nn+1(3)如果YY=10,部分积加-X补,再右移1位。 nn+1这样重复进行n+1步,但最后一步不移位。包括一位符号位,所得乘积为2n+1位,其中n为尾数的数位。(教材P86例题) 235 一、定点原码一位除法法则 XXXX 设有 被除数X,其原码为 X原=012n除数Y,其原码为 Y原=YYYY 012n则有: X/Y原=(X?Y)(0XXX / 0YYY) 0012n12n二、手工运算X/Y的过程,设X=01011,Y=01101 ? 判断被除数与除数的大小,如果被除数大于或等于除数,则商就大于或等于1,产生溢出;如果被除数小于除数,上商0,X的低位补

温馨提示

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

评论

0/150

提交评论