C++中 21/-5=-4或者-5 ???!!!

visame 2007-06-23 01:09:42
根据C++ Primer,(具体取值由机器决定)
21/-5=-4或者-5,
21%-5=-4或者1;

21/-5=-4(我的理解:21/5=4---->21/-5=-4)还可以理解,
21%-5=1(我的理解:1=21-(-5)*(-4))也可以接受。

但是,另外两个值百思不得其解,哪位高手讲讲计算过程吧。

THNANKS!
...全文
288 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
windskzw 2007-12-03
  • 打赏
  • 举报
回复
那个除 我看懂了 但是取余 还是不懂 迷茫ING。。
mu_yang 2007-12-01
  • 打赏
  • 举报
回复
x mod y = x - y[x/y] for any real numbers


???实数?
Vitin 2007-06-23
  • 打赏
  • 举报
回复
根据 “1.2.4. Integer Funcitons and Elementary Number Theory -- TAOCP”
x mod y = x - y[x/y] for any real numbers(这里[]表示高斯函数,即the floor of x/y)
本例中 x = 21, y = -5,x/y=-4.2,[x/y]=-5 (注意:这里/不表示C++的除法,而是数学上的)
因此 x mod y = 21 - (-5)*(-5) = -4

x mod y 即 C++中的 x%y ,因此 21%-5 = -4
然后在C++中 21/-5 = (21 - 21%-5) / -5 = -5

所以,答案21/-5=-5 21%-5=-4 是和数学上的定义一致的。
另一种答案则是计算机上的简化,它不同于数学定义,但使用和理解起来更方便。
jinwei1984 2007-06-23
  • 打赏
  • 举报
回复
mark!
visame 2007-06-23
  • 打赏
  • 举报
回复
"另一种答案则是计算机上的简化,它不同于数学定义,但使用和理解起来更方便。"
究竟怎样简化的,能具体谈谈吗?
visame 2007-06-23
  • 打赏
  • 举报
回复
还是不够清楚,有哪位再讲讲?

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧