zoukankan      html  css  js  c++  java
  • 谜题1:奇数性

    isOdd方法用来判断输入参数i是否为奇数,结果会怎样呢?

    public static boolean isOdd(int i){
      return i % 2 == 1;
    }

    考察的是%(取余)运算符的使用,该操作符被定义为对于所
    有的 int 数值 a 和所有的非零 int 数值 b,都满足下面的恒等式:
    (a / b) * b + (a % b) == a ;

    当isOdd方法传入的参数是负奇数时,返回依然是FALSE,但负奇数也是奇数,因此上述代码存在缺陷,因此在使用时,通常改为如下更符合该操作符的定义:

    public static boolean isOdd(int i){
      return i % 2 != 0;
    }

    另外取余和取模还有很多不同之处

    取余:rem(5,2) = 1

        rem(5,-2) = 1

           rem(-5,2) = -1

           rem(-5,-2) = -1

    取模:mod(5,2) = 1

        mod(5,-2) = -1

           mod(-5,2) = 1

           mod(-5,-2) = -1

    综上来看二者却有不同,取余结果的正负与被除数相同,取模结果的正负与除数相同

    还有当是浮点型时,先四舍五入再取余

    例如:17%5.6 = 5;

    还有一种情况例如:10%13 = 10;

    -----------------------------------------------------------------

    仔细研究发现一个小小运算符都如此的奇妙。。

  • 相关阅读:
    【模板】扩展中国剩余定理(EXCRT)
    战略游戏(树形DP)
    二叉苹果树(树形DP)
    货车运输(最大生成树,LCA)
    [CQOI2016]密钥破解
    Pollard-Rho算法andMiller_Rabin算法
    [TJOI2009]猜数字(中国剩余定理)
    中国剩余定理(学习笔记)
    线段树 Segment Tree
    辗转相除法
  • 原文地址:https://www.cnblogs.com/applemy/p/6366109.html
Copyright © 2011-2022 走看看