为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

无符号二进制数的算术运算

2017-11-22 5页 doc 17KB 61阅读

用户头像

is_842972

暂无简介

举报
无符号二进制数的算术运算无符号二进制数的算术运算 1. 加法运算 规则: 0,0,0 0,1,1 1,0,1 1,1,0(有进位) 例:计算10110110B,00101100B 解: 进位 1111 1000 被加数 1011 0110 加数 0010 1100 和 1110 0010 所以,10110110B,00101100B,11100010B 2. 减法运算 规则: 0,0,0 1,0,1 1,1,0 0,1,1(有借位) 例:计算11000100B,00100101B 解: 借位 0111 1110...
无符号二进制数的算术运算
无符号二进制数的算术运算 1. 加法运算 规则: 0,0,0 0,1,1 1,0,1 1,1,0(有进位) 例:计算10110110B,00101100B 解: 进位 1111 1000 被加数 1011 0110 加数 0010 1100 和 1110 0010 所以,10110110B,00101100B,11100010B 2. 减法运算 规则: 0,0,0 1,0,1 1,1,0 0,1,1(有借位) 例:计算11000100B,00100101B 解: 借位 0111 1110 被减数 1100 0100 减数 0010 0101 差 1001 1111 所以,11000100B,00100101B,10011111B 3. 乘法运算 规则: 0×0,0 0×1,0 1×0,0 1×1,1 二进制乘法的运算方法与十进制乘法的运算方法类似。 例:计算1100B×1001B 解:按照十进制乘法的运算过程,有 1100 × 1001 1100 0000 0000 1100 1101100 所以,1100B×1001B,1101100B 另外,乘法运算也可以采用加法和左位的方法实现,算法如下: 1)令部分积,0; 2)如果乘数的当前位,1,则将被乘数加到部分积上,否则不加; 3)将被乘数左移1位; 4)转到2),直到乘数的所有位都检查完。 下面,用加法和左移的方法重做上例。 解:按照移位加的算法,有 乘 数 被乘数 部分积 1 0 0 1 1100 0000 乘数为1,加被乘数到部分积上 1100 被乘数左移1位 11000 乘数为0,只将被乘数左移1位 110000 乘数为0,只将被乘数左移1位 1100000 乘数为1,加被乘数到部分积上 1101100 运算结束,被乘数不再左移 所以,1100B×1001B,1101100B。可以看出,这与前一种方法的结果是一样的,但后一种方法更便于计算机实现,因为移位是计算机的一种最基本的操作。 4. 除法运算 多字节二进制除法算法 二进制的除法通过重复减法运算实现即通过重复”从被除数的高位依次取出每一位, 被取出的数据加上上次的减法结果, 然后减去除数”的处理, 求出除法结果 假设: 被除数 R0R1 (占用4字节) 除数 R2R3 (占用4字节) 商 R0R1 (占用4字节) ******************* 这里需要说明, 此程序执行 结束以后, 商的结果保存在被除数中 ************ 余数 R4R5 (占用4字节) 移位次数 R6L (占用1字节) ******************* 这里需要说明, 其数值根据 被除数的位数定义, 这里为32 ************* 操作流程如下: a) 余数清零 b) 判断除数是否为0, 如果为0, 是错误, 不再往下执行. c) 设定移位次数 d) 被除数左移1位, 溢出的最高位保存在进位标志C中, 再把余数左移1位, 把C(被除数溢出的最高位)放入余数的最低位 e) 余数与除数比较大小: 余数 ? 除数时, 被除数的最低位, 赋值 1, 余数减去除数 余数 < 除数时, 被除数的最低位, 赋值 0 f) 移位次数递减 g) 直到移位次数为0, 否则重复d) ~ f) 程序代码以renesas为例 MOV.W #0,R4 ;clear R4 MOV.W #0,R5 ;clear R5 CMP.W R4,R2 BNE LBL1 ;R4,R2 不相等, 程序跳至LBL1 CMP.W R4,R3 BEQ ERR ; R4,R3 相等, 程序跳至ERR LBL1: MOV.B #32,R6L ;set byte counter LBL2: SHLL R1L ;被除数左移1位, 最高位放入C ROTXL R1H ROTXL R2H ROTXL R1H ROTXL R5L ;余数左移1位, 移入C ROTXL R5H ROTXL R4H ROTXL R4H BSET #0,R1L ; 被除数的最低位, 赋值 1 SUB.W R3,R5 ;余数 减去 除数 SUBX.B R2L,R4L SUBX.B R2H,R4H BCC LBL3 ; 余数 ? 除数(减法结果为正) , 程序跳至LBL3 ADD.W R3,R5 ; 余数 < 除数(减法结果为负时, 恢复到减法前的余数) ADDX.B R2L,R4L ADDX.B R2H,R4H BCLR #0,R1L ; 被除数的最低位, 赋值 0 LBL3: DEC.B R6L ; 定移位次数递减 BNE LBL2 ; 移位次数为不0, 程序跳至LBL2 BRA EXIT ; 程序跳至EXIT ERR: ; 添加除数为0 的处理 EXIT: RTS
/
本文档为【无符号二进制数的算术运算】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索