C语言中有关取模和取余的问题
创始人
2024-06-02 13:53:08
0

余数在数学中有重要的作用,在编程中也同样重要。不过,在不同编程语言中,有关余数的运算问题往往是不相同的。

对于正数的运算,相信有小学基础的人都能理解,没有什么问题:

  • 14 / 6 = 2 ··· 2,因为 14 = 2x6+2

但对于负数的运算,可能会出现以下几种情况:

  • -14 / 6 = -2 ··· -2,因为 -14 = (-2)x6+(-2)
  • -14 / 6 = -3 ··· 4,因为 -14 = (-3)x6+4
  • -14 / -6 = 2 ··· -2,因为 -14 = 2x(-6)+(-2)
  • -14 / -6 = 3 ··· 4,因为 -14 = 3x(-6)+4

这说明 -14 除以 6 和 -14 除以 -6 都有两个余数,这是怎么回事呢?

在数学中,余数的定义如下:

如果 a 和 d 是两个自然数,d 不等于 0,可以证明存在两个唯一的整数 q 和 r,满足 a = q * d + r,且 0 ≤ r < d。其中,q 被称为商,r 被称为余数。

所以,数学中的余数只能大于 0,按照定义,-14 除以 -6 的余数只能是 4。不过很遗憾,许多编程语言并不按照数学的定义来。

取余运算(rem)

取余运算的步骤为:

  • 计算商:c = a / b,商值 c 向 0 方向舍入
  • 计算模或者余数: r = a - c * b

朝 0 取整:

  • 当 c 为正时,舍弃其小数部分的值
  • 当 c 为负时,也是舍弃其小数部分的值
  • 比如,2.33 朝 0 取整后为 2,而 -2.33 朝 0 取整后为 -2

在 C 语言中 % 采用的是取余运算。

  • 14 rem 6 = 2,因为 14 = 2x6+2
  • -14 rem 6 = -2,因为 -14 = (-2)x6+(-2)
  • 14 rem -6 = 2,因为 14 = (-2)x(-6)+2
  • -14 rem -6 = -2,因为 -14 = 2x(-6)+(-2)

取模运算(mod)

取模运算的步骤为:

  • 计算商:c = a / b,商值 c 向负无穷方向舍入
  • 计算模或者余数: r = a - c * b

朝负无穷方向取整:

  • 当 c 为正时,舍弃其小数部分的值
  • 当 c 为负时,加 -1,舍弃其小数部分的值
  • 比如,2.33 朝负无穷方向取整后为 2,而 -2.33 朝负无穷方向取整后为 -3

在 Python 中 % 采用的是取模运算。

  • 14 mod 6 = 2,因为 14 = 2x6+2
  • -14 mod 6 = 4,因为 -14 = (-3)x6+4
  • 14 mod -6 = -4,因为 14 = (-3)x(-6)+(-4)
  • -14 mod -6 = -2,因为 -14 = 2x(-6)+(-2)

相关内容

热门资讯

安卓4.4系统tv软件,探索安... 亲爱的读者们,你是否曾为家里的电视屏幕增添一些智能的魔力而烦恼?别担心,今天我要给你带来一个超级实用...
安卓系统的研究人物,安卓系统发... 你知道吗?在科技飞速发展的今天,安卓系统可是占据了智能手机市场的大半壁江山。而在这片广阔的天地里,有...
山寨苹果刷会安卓系统,安卓系统... 你知道吗?在科技圈里,总有一些让人眼前一亮的小秘密。今天,我要给你揭秘一个关于山寨苹果刷安卓系统的神...
安卓系统新用户登录,畅享智能生... 你刚刚入手了一台全新的安卓手机,是不是有点小激动呢?别急,别急,让我来给你详细介绍一下安卓系统新用户...
安卓8.0系统推荐版本,体验流... 你有没有发现,手机系统更新换代的速度简直就像小孩子的成长一样快?这不,安卓8.0系统已经悄悄地来到了...
安卓系统怎么分享位置吗,一键操... 你是不是也有过这样的经历:和朋友约好见面,却因为找不到对方而急得团团转?别担心,今天就来教你怎么在安...
安卓系统更新加速器,畅享极速升... 你有没有发现,手机更新系统的时候总是慢吞吞的,让人等得心痒痒?别急,今天就来给你安利一款神器——安卓...
百答系统和安卓系统区别,差异解... 你有没有想过,为什么你的手机里装了那么多应用,却还是觉得信息不够全面?其实,这背后的大脑——操作系统...
安卓锁系统设置软件,软件设置与... 手机里的秘密可多了去了,是不是有时候你也会觉得,这手机里的信息要是被别人看到了可怎么办呢?别担心,今...
安卓电视u盘游戏系统,轻松畅享... 你有没有想过,家里的安卓电视也能玩上那些刺激的电脑游戏呢?没错,就是那种让你一玩就停不下来的游戏!今...
挂载安卓系统为读写权限,读写权... 你有没有想过,你的手机里那些神奇的安卓系统,竟然可以赋予某些应用读写权限?这听起来是不是有点像科幻电...
安卓12系统怎么打补丁,保障设... 亲爱的安卓用户们,你是否也遇到了系统卡顿、bug频发的小烦恼呢?别急,今天就来给你支个招——安卓12...
客厅电脑用安卓系统好吗,体验智... 亲爱的读者,你是不是在为客厅电脑选择操作系统而烦恼呢?安卓系统,这个我们日常手机上常见的操作系统,是...
安卓系统能看访客记录,轻松查看... 你有没有想过,你的安卓手机里藏着一个小秘密?没错,就是访客记录!是的,你没听错,你的手机里竟然能查看...
印度安卓系统电脑推荐,性能卓越... 你有没有想过,在印度这片神奇的土地上,用一台安卓系统电脑会是怎样的体验呢?想象阳光洒在泰姬陵的白色大...
安卓系统合作公司,安卓系统合作... 你知道吗?在科技的世界里,安卓系统可是个超级明星呢!它不仅拥有庞大的用户群体,还吸引了一大批合作公司...
苹果表有安卓系统时间,时间同步... 你有没有发现,最近苹果表也开始支持安卓系统了?没错,就是那个一直以封闭著称的苹果,竟然也开始拥抱安卓...
原生安卓系统裁剪图片,原生安卓... 你有没有发现,用原生安卓系统拍照,有时候拍出来的照片分辨率超高,但就是有点大,想裁剪却不知道怎么操作...
安卓系统蓝牙开关APP,安卓系... 你有没有遇到过这种情况:手机里的安卓系统蓝牙开关总是让人摸不着头脑?有时候想开蓝牙,却找不到开关在哪...
安卓系统能登录ios系统王者吗... 你有没有想过,安卓系的手机能不能登录iOS系统的王者荣耀呢?这可是个让人好奇不已的问题哦!毕竟,两个...