黑马程序员技术交流社区

标题: 零基础java 取模的简单问题 [打印本页]

作者: 宋启龙    时间: 2012-5-27 16:36
标题: 零基础java 取模的简单问题
本帖最后由 宋启龙 于 2012-5-27 17:12 编辑

取模的负数运算规则  为什么是这样的结果??求原理??    -1%5  模-1  1%-5  模1     为什么????   
作者: 宋启龙    时间: 2012-5-27 16:45
黑马训练营:我人生的新起点,在我大学的毕业的时候我换了一条新的道路,为了拥有了你而努力,一分耕耘一份收获,让我用自己的努力来验证你我的价值!!!
作者: 飞舞❤心动    时间: 2012-5-27 16:48
啊 你没有发任何东西 你是想知道?
>>> 这是无符号右移
  无符号右移运算符>>>
  它的通用格式如下所示:
  value >>> num
  num 指定要移位值value 移动的位数。
  无符号右移的规则只记住一点:忽略了符号位扩展,0补最高位
  无符号右移运算符>>> 只是对32位和64位的值有意义。
>> 这是右移运算符
  右移运算符<<使指定值的所有位都右移规定的次数。
  1)它的通用格式如下所示:
  value >> num
  num 指定要移位值value 移动的位数。
  右移的规则只记住一点:符号位不变,左边补上符号位
<< 这是左移运算符
  左移运算符<<使指定值的所有位都左移规定的次数。
  1)它的通用格式如下所示:
  value << num
  num 指定要移位值value 移动的位数。
  左移的规则只记住一点:丢弃最高位,0补最低位
  如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模。如对int型移动33位,实际上只移动了33%32=1位。
  2)运算规则
  按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。
  当左移的运算数是int 类型时,每移动1位它的第31位就要被移出并且丢弃;
  当左移的运算数是long 类型时,每移动1位它的第63位就要被移出并且丢弃。
  当左移的运算数是byte 和short类型时,将自动把这些类型扩大为 int 型。



作者: 宋启龙    时间: 2012-5-27 16:58
本帖最后由 宋启龙 于 2012-5-27 17:22 编辑
飞舞❤心动 发表于 2012-5-27 16:48
啊 你没有发任何东西 你是想知道?
>>> 这是无符号右移
  无符号右移运算符>>>

-1%5  模-1   -5%-1 模1     为什么????   
作者: 我能驾驭住    时间: 2012-5-27 17:08
-1%5  模-1   -1%5  模1     为什么????   

1:记住一点,我们求余时,看被除数的正负,如果是正,结果为正,如果是负,结果是负
你看-1%5,首先以看被除数,-1是负数,结果就是负数,再求1%5,余数是1,故结果加上负号就行!
1%5 被除数是1,1是正数,结果就是正数,而1%5,余数是1,故结果是+1,故是1
作者: 宋启龙    时间: 2012-5-27 17:19
我能驾驭住 发表于 2012-5-27 17:08
-1%5  模-1   -1%5  模1     为什么????   

1:记住一点,我们求余时,看被除数的正负,如果是正,结果为 ...

谢谢!!解释的很清楚。
作者: 马林贺    时间: 2012-5-27 17:21
   告诉你一个取摸的口诀
  
  左边如果小于右边 等于左边
  
  左边等于左边     等于零
   
  在有负数的时候,只看左边右边不用看
作者: 马林贺    时间: 2012-5-27 17:22
   左边等于右边  第二句更正下。
作者: 飞舞❤心动    时间: 2012-5-27 17:26
马林贺 发表于 2012-5-27 17:22
左边等于右边  第二句更正下。

嗯 精辟 有时候这个可以用到!
作者: 宋启龙    时间: 2012-5-27 17:35
马林贺 发表于 2012-5-27 17:22
左边等于右边  第二句更正下。

谢谢拉!两边都是负数???
作者: 杨卫腾    时间: 2012-5-27 22:06
马林贺 发表于 2012-5-27 17:21
告诉你一个取摸的口诀
  
  左边如果小于右边 等于左边

这个口诀真的不错,所有取模问题迎刃而解了。
作者: 马林贺    时间: 2012-5-27 22:10
杨卫腾 发表于 2012-5-27 22:06
这个口诀真的不错,所有取模问题迎刃而解了。

  互相学习!
作者: 路冬冬    时间: 2012-5-27 23:45
取模的正负是和要取模的数有关的,和模的正负无关,
作者: 刘欢    时间: 2012-5-28 14:56
马林贺 发表于 2012-5-27 17:21
告诉你一个取摸的口诀
  
  左边如果小于右边 等于左边

学习了   
作者: 丁桂松    时间: 2012-5-28 15:22
通过代码,我们去运行结果得到规律 :
                 * System.out.println(10 % 3);
                 *
                 * System.out.println(10 % -3);
                 *
                 * System.out.println(-10 % 3);
                 *
                 * System.out.println(-10 % -3);// 在做取模运算时, 和%右边的数的符号无关, 只取决于%左边的数的符号
               
                 
               
                 %运算规律,
                 *
                 *
                 * 左边小于右边结果是左边;
                 *
                 * 右边是1结果是0;
                 *
                 * 左边等于右边结果是0;
                 *
                 * 左边大于右边做运算;
                 *
                 * 在做取模运算时, 和%右边的数的符号无关, 只取决于%左边的数的符号;
                 *
                 * 任何数%2 结果不是0就是1,可以用于判断数据的奇偶!
               




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2