A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄炳期 金牌黑马   /  2013-5-20 09:04  /  1315 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Justin1841 于 2013-5-20 17:28 编辑

  打印到控制台的时候,5 % -2 的结果为1,-5 % 2的结果为-1,可是底层运算到底是怎样的呢?大神来解答下。谢谢

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

11 个回复

倒序浏览
-5%2 == -(5%2)
5%-2 == (5%2*-1
java就是这样的规定的。
负数的取模运算,把负数的负号提出来,然后进行绝对值的取模运算,然后加上负号。
整数取负数的模也是一致的。
回复 使用道具 举报
本帖最后由 占琳 于 2013-5-20 10:07 编辑

取模运算  得出数值 跟你除的那个数一致  比如-5%2=-1 -5%-2=-1  5%2=1 5%-2=1  看出来规律了吗
结果就是跟5的数值类型一致 他要是负数 结果就是负的 要是正数 结果就是正的

点评

-5%-2的结果应该是-1,哥们打错了吧  发表于 2013-5-20 10:08
回复 使用道具 举报
刘胜寒 发表于 2013-5-20 09:08
-5%2 == -(5%2)
5%-2 == (5%2*-1
java就是这样的规定的。

寒哥,第二句5%-2 == (5%2*-1  
这句还是不了解,你是不是打错符号了?还是我智商捉急。。。。
回复 使用道具 举报
占琳 发表于 2013-5-20 09:15
取模运算  得出数值 跟你除的那个数一致  比如-5%2=-1 -5%-2=1  5%2=1 5%-2=1  看出来规律了吗
结果就是跟 ...

按照这个规律,你算的-5%-2=1????算出的结果符号和-5不一样啊
回复 使用道具 举报
Justin1841 发表于 2013-5-20 09:28
按照这个规律,你算的-5%-2=1????算出的结果符号和-5不一样啊

取模运算,结果是正还是负,看被模数是不是正负,也就是模左边的数是不是负数,如果是结果就是负的,如果不是结果就是正的。
回复 使用道具 举报
占琳 中级黑马 2013-5-20 10:07:56
7#
占琳 发表于 2013-5-20 09:15
取模运算  得出数值 跟你除的那个数一致  比如-5%2=-1 -5%-2=-1  5%2=1 5%-2=1  看出来规律了吗
结果就是 ...

不小心打错了一个数字 你们真敏锐
回复 使用道具 举报
黄炳期 来自手机 金牌黑马 2013-5-20 10:44:25
8#
占琳 发表于 2013-5-20 10:07
不小心打错了一个数字 你们真敏锐

嘎嘎!好吧!谢谢你了啊,能不能说下底层运算啊
回复 使用道具 举报
黄炳期 来自手机 金牌黑马 2013-5-20 16:05:37
9#
刘胜寒 发表于 2013-5-20 09:08
-5%2 == -(5%2)
5%-2 == (5%2*-1
java就是这样的规定的。

寒哥,我等您一天了。。。麻烦您能不能说清楚点呢。你的意思是不是5%-2 == (5%2)*-1?

点评

对的。java中是把符号提取出来的。  发表于 2013-5-20 17:24
回复 使用道具 举报
求模x%y=z,z的符号只与第一个数有关,就是与x的符号有关,x 数为负数z就为负数;x为正数,z就为正数!
回复 使用道具 举报
Justin1841 发表于 2013-5-20 16:05
寒哥,我等您一天了。。。麻烦您能不能说清楚点呢。你的意思是不是5%-2 == (5%2)*-1? ...

好的,谢谢了啊
回复 使用道具 举报
曹世明 发表于 2013-5-20 16:20
求模x%y=z,z的符号只与第一个数有关,就是与x的符号有关,x 数为负数z就为负数;x为正数,z就为正数! ...

这么多位大神帮忙才弄懂,真的不好意思了都。
谢谢你了,哥儿们。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马