如上图所示,PPT里的三个例题每个结果取余的方法都不一样,有时候把进行完±D后的结果看做余数,有时候把左移完的结果看成余数;而且第三题,一般情况下算四位数不就够了吗,为什么又多算了一位?
补码除法加减交替法最终结果的余数怎么看?
如上图所示,PPT里的三个例题每个结果取余的方法都不一样,有时候把进行完±D后的结果看做余数,有时候把左移完的结果看成余数;而且第三题,一般情况下算四位数不就够了吗,为什么又多算了一位?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注 让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
问题分析: 三个例题均涉及到取余的操作,但每个例题的操作方式不同,导致结果的表示也不同。其中,第一题和第二题都采用了一种比较常规的方法,即通过右移或左移操作将余数放到一个固定的位置,然后再将余数取出。而第三题则采用了一种比较特殊的方法,即先左移一位,再右移一位,并且结果多算了一位。 解答: 第一题中,将进行完减法操作后的结果左移8位,再进行与运算,目的是将结果中除余数以外的部分全部清零,只留下余数。最终结果的表示为“取出余数”操作的形式,即使用一个单独的变量存储余数。 代码示例:int dividend = 323; int divisor = 4; int quotient = dividend / divisor; // 商 int remainder = dividend % divisor; // 余数 int result = (remainder << 8) & 0xFF; // 结果取余操作 printf("result = %d\n", result); // 输出结果
第二题中,将进行完加法操作后的结果右移8位,再进行与运算,目的同样是将结果中除余数以外的部分全部清零,只留下余数。最终结果的表示同样为“取出余数”操作的形式。 代码示例:
int dividend = 323; int divisor = 4; int quotient = dividend / divisor; // 商 int remainder = dividend % divisor; // 余数 int result = (remainder >> 8) & 0xFF; // 结果取余操作 printf("result = %d\n", result); // 输出结果
第三题中,虽然也是将余数左移了一位,但是随后又将结果右移了一位,导致最终结果多算了一位。这种操作方式有时也被称为“余数延申法”,其目的是通过扩大余数的位数,来提高计算精度。 代码示例:
int dividend = 3234; int divisor = 4; int quotient = dividend / divisor; // 商 int remainder = dividend % divisor; // 余数 int temp = (remainder << 1) | (quotient & 1); // 将余数左移一位,并加上商的最低位 int result = (temp >> 7) & 0x1F; // 结果取余操作 printf("result = %d\n", result); // 输出结果
综上所述,不同的应用场景和需求,决定了在进行取余操作时不同的处理方法。在实际编程应用中,需要根据具体情况进行灵活处理。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 1
悬赏问题
- ¥15 数学建模招标中位数问题
- ¥15 phython路径名过长报错 不知道什么问题
- ¥15 深度学习中模型转换该怎么实现
- ¥15 HLs设计手写数字识别程序编译通不过
- ¥15 Stata外部命令安装问题求帮助!
- ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
- ¥15 TYPCE母转母,插入认方向
- ¥15 如何用python向钉钉机器人发送可以放大的图片?
- ¥15 matlab(相关搜索:紧聚焦)
- ¥15 基于51单片机的厨房煤气泄露检测报警系统设计