- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
补码运算与说明 单片机
* 补码的运算说明 ☆在微处理机中,使用补码进行运算使同一个微处理机中既能运算带符号数又能运算不带符号的数。而且,在采用补码表示带符号数的情况下,两个数的减法可以用加法来实现。 ☆在进行带符号数的加减运算时,把参与运算的数据转换成补码形式进行运算。当使用8位二进制数表示带符号的数时,它所能表示的数值范围在(-128)10~(+127)10之间,如果相加结果超出了这个范围,便溢出。 [X+Y]补=[X]补+[Y]补 [X-Y]补=[X]补+[-Y]补 加法运算 例: [98]补 0 1 1 0 0 0 1 0 [25]补+)0 0 0 1 1 0 0 1 [123]补 0 0 1 1 1 1 0 1 1 未溢出 0 0 Cy S(未溢出) 补码的运算 例:已知 X=52 Y=38 求X-Y 方法1: 直接相减 X-Y = 52-38 =14 0 0 1 1 0 1 0 0 -) 0 0 1 0 0 1 1 0 0 0 0 0 1 1 1 0 方法2: 补码相加 X-Y = [ [ X-Y]补]补 = [ [X]补+[-Y]补]补 =[ [52]补+[ -38]补]补 =[ 14 ]补 =14 [52]补: 0 0 1 1 0 1 0 0 [-38]补:+) 1 1 0 1 1 0 1 0 1 0 0 0 0 1 1 1 0 自然丢失 计算机在做算术运算时,必需检查溢出,以防止发生错误 【例1】两个带符号的数补(十进制数+65)与补(十进制数+67) 例中是两个正数相加,但结果却是一个负数——符号位为1。显然,这个结果是错误的,出现这种错误的原因就在于这两个数相加的结果超过了8位二进制带符号数所能表示的数值范围。 【例2】两个负数补和补的相加情况。 由于规定用8位二进制数来表示带符号的数,按8位二进制数补码来解释这两个带符号数的相加,其结果为一个正数。很明显,结果是错误的。 【例3】两个无符号数补和补相加: 从相加计算的结果来看,如果微处理机只有8位,也就是用8位二进制数来解释运算的结果,则将出现错误。因此,在微处理机中设有专门的一位,称为进位位,它将用于保存第九位以防丢失信息。 [85]补: 0 1 0 1 0 1 0 1 [47]补:+)0 0 1 0 1 1 1 1 [132]补: 1 0 0 0 0 1 0 0 溢出 0 1 Cy S (溢出) 错:两个正数相加和为负数。 [- 85]补: 1 0 1 0 1 0 1 1 [- 47]补:+)1 1 0 1 0 0 0 1 [- 132]补:1 0 1 1 1 1 1 0 0 溢出 1 0 Cy S 错:两个负数相加和为正数。 ☆??? 十进制数的编码 十进制的字符用二进制数进行编码——BCD码: ?????0?????0000 5 0101 1010 1111 1 0001 6 0110 1011 2 0010
文档评论(0)