c 中负数的模数-ag捕鱼王app官网

c 中负数的模数

作者:迹忆客 最近更新:2023/08/31 浏览次数:

在本文中,我们将发现余数和模数之间的差异。 我们将了解 % 运算符的基础知识。

稍后,我们将了解 % 运算符在 python 和 c 中的行为方式。 最后,我们将通过讨论在 c 中实现模数功能的几种方法来总结本文。


余数与模数

% 符号的确切行为可能因不同的编程语言而异。 操作员经常产生令人惊讶的结果,让我们感到困惑。

它会产生模数还是余数吗? 在检查其在编程语言中的行为之前,让我们首先澄清它们有何不同。

余数

余数只是两个整数算术除后剩下的部分。 无论是正数还是负数,余数的符号始终由被除数的符号决定。

检查下面的示例可以清楚地理解这一点。

例子:

  1. 7%3=1

    这里的被除数是 7,它是正号,所以结果也将是正号。

  2. -7%3=-1

    这里被除数是-7,是负号,所以结果也将是负号。

  3. 7%-3=1

    这里的被除数是 7,它是正号,所以结果也将是正号。

  4. -7%-3=-1

    这里被除数是-7,是负号,所以结果也将是负号。

模数

当余数与除数符号相反时,模为余数与除数之和;当余数与除数同号时,模为算术除后的剩余部分。

模数将与除数具有相同的符号。 检查下面的示例可以清楚地理解这一点。

例子:

  1. 5%3=2

    这里除数和余数都是正号,因此余数也将是正号。

  2. -5%3=1

    这里,除数和余数的符号相反,因此结果将是余数和除数的和。 即-2 3 = 1

  3. 5%-3=-1

    这里除数和余数都是相反的符号。 结果将是余数与除数之和。 即 2 -3 = -1

  4. -5%-3=-2

    这里除数和余数的符号相同,因此结果与余数相同。

从上面的例子可以清楚地看出,如果被除数和除数都为正,则模和余数相同。 两者在负数的情况下是不同的。

至此,我们希望清楚余数和模数有何不同。 现在我们来谈谈 % 运算符在 python 和 c 中的行为。


c 中的 % 运算符

在 c 中,% 称为模运算符。 它是一个算术运算符。

它用于计算执行整数除法所产生的余数。 尽管它的名称为“模”,但要记住的重要一点是它不提供模数。

在 c 中,% 符号仅返回余数。 检查下面的示例。

#include 
using namespace std;
int main()
{
    cout << -7 % 3 << endl;
    cout <<  7 % -3 << endl;
}

输出:

-1
 1

正如输出所示,% 运算符没有给出模数。 它只是返回余数。


c 中%的实现

让我们看看%在c 中的实现。 c 中的余数根据以下等式返回。

让我们开发使用上面的等式(不使用 % 运算符)计算余数的逻辑。

#include 
using namespace std;
int calremainder(int a, int b)
{
    int q = a / b;
    return a - (b * q);
}
int main()
{
    int a = -7, b = 3;
    cout << calremainder(a, b) << endl;
}

输出:

-1

python 中的 % 运算符

在 python 中,% 被称为模运算符。 模运算符在 python 中被视为算术运算。

它用于计算执行整数除法所产生的模数。 这就是python与c 的不同之处。

当我们在 c 中使用模运算符时,它返回余数,而 python 返回模数。 检查下面的示例以观察 python 中模运算符的行为。

print (-7 % 3)
print (7 % -3)

输出:

 2
-2

在第一个示例中,-7 % 3 给出余数 -1。 由于余数 (-1) 和除数 (3) 符号相反,因此它们的和将为我们提供模数。 即-1 3 = 2。

例2也是如此。


python中%的实现

我们来看看%在python中的实现。 python 中的模数根据以下等式返回。

让我们使用上面的等式(不使用 % 运算符)来开发计算模数的逻辑。

from math import floor
def calmodulus(a, b):
    q = floor(a / b)
    return a - b * q
print (calmodulus(-7, 3))

输出:

2

在 c 中实现 python 等效模数的方法

我们研究了余数和模数的区别以及 % 运算符在 python 和 c 中的行为方式。 在 python 中,当您将 % 与正除数一起使用时,您总是会得到非负值。

大多数时候,我们使用正除数,并且我们需要模数的功能而不仅仅是余数。 如果除数为正号,则模数始终返回正值。

让我们看看在 c 中实现此行为的不同技术。

方法 1:实现方程

我们可以通过在 c 中实现等式 modulus = a - ( b * floor( a / b ) ) 来实现 python 模数行为。

#include 
#include 
using namespace std;
int getmodulus(int dividend, int divisor)
{
    // type casting is necessary as (int)/(int) will give int result, i.e. -5 / 2 will give -1 and not -2.5
    int t = (int)floor((double)dividend / divisor);
    return dividend - divisor * t;
}
int main()
{
    cout << getmodulus(-8, 3);
}

输出:

1

方法二:余数与除数相加

在 c 中实现模数功能的另一种方法是,如果余数和除数的符号相反,则将它们相加。

我们假设除数是正号,因此每当我们得到负余数时,我们将其添加到除数以获得模值。

#include 
using namespace std;
int getmodulus(int dividend, int divisor)
{
    int t = dividend % divisor;
    return t >= 0 ? t : t   divisor;
}
int main()
{
  cout << getmodulus(-7,3);
}

输出:

2

上一篇:

下一篇:

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

arduino 中停止循环

发布时间:2024/03/13 浏览次数:444 分类:c

可以使用 exit(0),无限循环和 sleep_n0m1 库在 arduino 中停止循环。

arduino 复位

发布时间:2024/03/13 浏览次数:315 分类:c

可以通过使用复位按钮,softwarereset 库和 adafruit sleepydog 库来复位 arduino。

发布时间:2024/03/13 浏览次数:181 分类:c

可以使用简单的方法 toint()函数和 serial.parseint()函数将 char 转换为 int。

arduino 串口打印多个变量

发布时间:2024/03/13 浏览次数:381 分类:c

可以使用 serial.print()和 serial.println()函数在串口监视器上显示变量值。

arduino if 语句

发布时间:2024/03/13 浏览次数:123 分类:c

可以使用 if 语句检查 arduino 中的不同条件。

arduino icsp

发布时间:2024/03/13 浏览次数:214 分类:c

icsp 引脚用于两个 arduino 之间的通信以及对 arduino 引导加载程序进行编程。

发布时间:2024/03/13 浏览次数:151 分类:c

可以使用 arduino 中的循环制作计数器。

使用 c 编程 arduino

发布时间:2024/03/13 浏览次数:127 分类:c

本教程将讨论使用 arduino ide 在 c 中对 arduino 进行编程。

arduino 中的子程序

发布时间:2024/03/13 浏览次数:168 分类:c

可以通过在 arduino 中声明函数来处理子程序。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图