微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法知道整数除法运算是否有余数?

如何解决有没有办法知道整数除法运算是否有余数?

我不想知道余数是什么,我只想知道是否有余数作为布尔值。 因此,使用模运算符不是我想要的。 使用 C 语言会更可取,但任何语言都可以。

解决方法

如果你真的不能使用余数运算(作业约束?),那么你可以使用

check_remainder = b*(a/b) != a; 

但其余的使用 % 是很自然的方式。

,

使用 div(),希望它可以通过 1 个单一操作计算商和余数。

#include <stdlib.h>
//...
int a = 42,b = 5;
div_t c = div(a,b);
if (c.rem) /* remainder for a/b is not zero */;
//...
,

在计算出余数之前,您无法判断是否存在余数,这意味着您必须执行除法。

也就是说,您可以采取一些捷径,但前提是除数是 2 的幂。例如,如果最低有效位为 1,则除以 2 将有余数。通常,除以 2如果最低 n 个有效位的值不是 0000.....0(n 个零),则 n 次幂将有余数。

在汇编级别,一些架构(例如 x86)为您提供商和余数作为 DIV 指令的结果。

如果使用模数运算符(或内部使用的除法运算符)不是一种选择,你可以用天真的方法:

unsigned has_remainder (unsigned a,unsigned b)
{
  while (a >= b)
    a -= b;
  return a;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。