- 1、本文档共68页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 1.4 带符号数的表示及运算 一、 机器数与真值 日常生活中遇到的数,除了上述无符号数外,还有带符号数。对于带符号的二进制数,其正负符号如何表示呢?在计算机中,为了区别正数和负数,通常用二进制数的最高位表示数的符号。对于一个字节型二进制数来说,D7位为符号位,D6?D0位为数值位。在符号位中,规定用“0”表示正,“1”表示负,而数值位表示该数的数值大小。 把一个数及其符号位在机器中的一组二进制数表示形式,称为“机器数”。机器数所表示的值称为该机器数的“真值”。 * 二、 机器数的表示方法 1. 原码 设数x的原码记作[x]原,如机器字长为n,则原码定义如下: 在原码表示法中,最高位为符号位(正数为0,负数为1),其余数字位表示数的绝对值。 * 例如,当机器字长n=8时, [+0]原 [-0]原=27+0(按定义计算,下同) [+8]原 [-8]原=27+8 [+127]原 [-127]原=27+127 当机器字长n=16时, [+0]原=0000000000000000B [-0]原=215+0=1000000000000000B [+8]原=0000000000001000B [-8]原=215+8=1000000000001000B [+32767]原=0111111111111111B [-32767]原=215+32767=1111111111111111B * 可以看出,8位二进制原码表示数的范围为-127?+127,16位二进制原码表示数的范围为-32767?+32767;“0”的原码有两种表示法示+0示-0。 * 原码表示法简单直观,且与真值的转换很方便,但不便于在计算机中进行加减运算。如进行两数相加,必须先判断两个数的符号是否相同。如果相同,则进行加法运算,否则进行减法运算。如进行两数相减,必须比较两数的绝对值大小,再由大数减小数,结果的符号要和绝对值大的数的符号一致。按上述运算方法设计的算术运算电路很复杂。因此,计算机中通常使用补码进行加减运算,这样就引入了反码表示法和补码表示法。 * 2. 反码 设数x的反码记作[x]反,如机器字长为n,则反码定义如下: 正数的反码与其原码相同。例如,当机器字长n=8时: [+0]反=[+0]原 [+127]反=[+127]原 当机器字长n=16时: [+8]反=[+8]原=0000000000001000B [+127]反=[+127]原=0000000001111111B * 负数的反码是在原码基础上,符号位不变(仍为1),数值位按位取反。例如,当机器字长n=8时: [-0]反=(28-1)-0 [-127]反=(28-1)-127 反码表示数的范围是:8位二进制反码表示数的范围为 -127?+127,16位二进制反码表示数的范围为-32767?+32767;“0”的反码有两种表示法示+0示-0。 * 3. 补码 设数x的补码记作[x]补,如机器字长为n,则补码定义如下: 正数的补码与其原码、反码相同。例如,当机器字长n=8时: [+8]补=[+8]反=[+8]原 [+127]补=[+127]反=[+127]原 当机器字长n=16时: [+8]补=[+8]反=[+8]原=0000000000001000B [+127]补=[+127]反=[+127]原=0000000001111111B 6 12 3 9 10 * 负数的补码是在原码基础上,符号位不变(仍为1),数值位按位取反,末位加1;或在反码基础上末位加1。例如,当机器字长n=8时: [-8]原 [-127]原 [-8]反 [-127]反 [-8]补=28-8 [-127]补=28-127 可以看出,8位二进制补码表示数的范围为-128?+127,16位二进制补码表示数的范围为-32768?+32767。8位二进制数的原码、反码和补码如表2.1所示。 *
文档评论(0)