- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三讲 原码、反码和补码的运用 * (三)原码 1、原码的定义 设机器数是用n位二进制数表示的整数,X表示真值,则原码的定义可用下式表达 [X]原= 例1-10 已知X= -1000100,求用8位二进制数表示的原码。 解:根据原码的定义, [X]原=27+| X | 1000100 * 2、原码的性质 [X]原=符号位+|X| 当n=8时,-(27-1)≤ X ≤ 27-1,即-127 ≤ X ≤ 127。 原码的零有两种表示法,若n=8。则10000000均表示零。 * 原码的缺陷 原码表示直观,与真值转换容易。但是,原码进行加减运算时,符号位不能同数值位一样参加运算,运算不方便。 如:X=-1,Y=1,求X+Y,采用原码运算的结果为: [X]原 +[Y]原 -2,显然结果不合理。 * (四)反码 1、反码的定义:设机器数是用n位二进制数表示的整数,X表示真值,则反码的定义可用下式表达 [X]反= * 例1-11 已知X= -0000100,Y=0000010,求用8位二进制数表示的反码,并求其和。 解:根据反码的定义, 由于X 0,Y 0,且n=8,则它们的反码分别为: [X]反=28 -1 - | X | =100000000-1-0000100 [Y]反=0+X 它们的和为:[X]反+[Y]反00000010以上运算结果转换成真值为10000010 → -0000010。这与真值运算X+Y= -0000100+0000010= -0000010的结果是吻合的。 * 2、反码的性质 当n=8时,-(27-1)≤ X ≤ 27-1,即-127 ≤ X ≤ 127。 反码的零有两种表示法,若n=8。则11111111均表示零。 对于正数,[X]反=[X]原;对于负数,符号位为1,将原码的其余位按位取反,即得反码。 * 反码的缺陷 反码进行加减运算时,虽然符号位能同数值位一样参加运算,但当运算发生最高位进位时,需要对结果加1修正。 若[X]反[Y]反求[X]反+[Y]反 [X]反 +[Y]反 100000000=0,显然与实际结果相比,少了1。 * (五)补码 1、补码的定义:设机器数是用n位二进制数表示的整数,X表示真值,则补码的定义可用下式表达 [X]补= 或者用一个式子表示: [X]补=2n+X (Mod 2n) * 例1-12 已知X= -0000100,Y=0001010,求用8位二进制数表示补码,并求其和。 解:根据补码的定义, 由于X 0,Y 0,且n=8,则它们的补码分别为: [X]补=28 +X =100000000 - 0000100 [Y]补=0+X 它们的和为: [X]补+ ) [Y]补 100000110 最高位进位舍去! 以上运算结果转换成真值为: 这与真值运算X+Y= -0000100+0001010=0000110的结果是吻合的。 * 2、补码的性质 当n=8时,数表示的范围:-27 ≤ X ≤ 27-1,即 -128 ≤ X ≤ 127。 补码的零只有一种表示法,若n=8。则为 对于正数,[X]补=[X]原;对于负数,符号位为1,其它位按位取反,再加1即得补码。 [X]补+[Y]补=[X+Y]补,[X]补 - [Y]补=[X]补 + [-Y]补= [X - Y]补。这一性质表明,补码运算的结果仍然是补码,体现了补码运算的完备性。而且补码可以将减法化成加法,这对于化简早期CPU中运算器的设计十分有益! * 补码运算中化减法为加法 已知[X]补[Y]补求: [X]补-[Y]补。 解: [X]补- [Y]补= [X]补+[-[Y]补]补 而[-[Y]补]补=2800000011,所以 [X]补- [Y]补= [-[Y]补]补运算称为对[Y]补求补。 * 补码的溢出及其判断 当两个补码数据运算时,如果其结果超出n位二进制
文档评论(0)