【问题标题】:Uses of the modulus operator模数运算符的使用
【发布时间】:2011-04-28 03:46:07
【问题描述】:

模数运算符有哪些用途?我知道它计算除法的余数,所以我真的在问余数有什么用?

到目前为止,我已经用它来检查表格上的数字是否为偶数和交替颜色。

【问题讨论】:

标签: programming-languages


【解决方案1】:

按位计算,包括条件检查。

【讨论】:

  • 有更好的按位运算运算符,例如>,|,&.
  • 是的...我更多地使用它来对排队的对进行条件检查。
【解决方案2】:
  • 单位转换,例如13425 m13425 / 1000 km and 13425 % 1000 m = 13 km and 425 m
  • 随机数修整,如果你使用 C/C++ 的 rand(),一个常见的习惯用法是 rand() % (HIGH - LOW) + LOW 来生成一个介于 HIGH 和 LOW 之间的随机数
  • 模运算:角度限制为 360 度或 2*pi,您可以使用模运算符对其范围进行归一化
  • 奇偶校验:如果“n % 2”为真,则 n 为偶数,否则为奇数

【讨论】:

    【解决方案3】:
    • 素数
    • 将基数 x 转换为基数 y

    【讨论】:

      【解决方案4】:
      for(int i=0;i<10;i++)
      {
        if((i % 2) == 0 )
        {
         // I'm in an even row
        }else{
         // I'm in an odd row
        }
      }  
      

      最基本的使用

      注意:lang 使用 Java

      【讨论】:

      • 你似乎有倒退。偶数 mod 为 0,这是错误的。另外,对于偶数和奇数,展开它并在循环中有两个步骤可能更简单吗?
      • 我的意思是不使用 mod 运算符,您的循环体可以包含: 偶数行代码;我++;奇数行的代码。这真的是关于可读性,这取决于具体的场景。
      • @Tesserex :) 这里我演示了%操作符最基本最简单的用法,我没说这是最高效的代码
      【解决方案5】:

      编程 101 示例是为数据调制行颜色:

      for(int i = 0; i < 100; i++)
      {
          write-color i % 2;
      }
      

      判断一个数是奇数还是奇数:

      return number % 2;
      

      【讨论】:

        【解决方案6】:

        通过每隔这么多迭代打印一次消息来获取长时间运行循环中的进度指示。

        List<Thing> bigList = readBigList();
        
        for (int i = 0; i < bigList.size(); i++) {
            processThing(bigList.get(i));
            if (i % 10000 == 0) {
                LOG.info("Processed " + i + " out of " + bigList.size() + " items");
            }
        }
        

        【讨论】:

          【解决方案7】:

          中国算术(这是首选的命名法吗,老兄?)

          【讨论】:

          • 你指的是Chinese Remainder Theorem吗?
          • @Lie 是的,看 AK Dewdney 的“图灵综合”的第 39 章不知道为什么,但该章的副标题是“中国算术”,他写的是中国剩余定理。
          【解决方案8】:

          模数运算符是Clock Arithmetic 中最重要的运算符。

          【讨论】:

          • 这是我最常使用它的地方,它可以很容易地设置一个重复的数字序列,只需在每个时钟滴答的计数器上加 1。我上次这样做是为了在精灵中驱动动画循环。
          【解决方案9】:

          它通常用于检查一个数是否可​​以被另一个数整除。

          if(number % 2 == 0){
              // the number is even
          } else {
              // the number is odd
          }
          

          if(number % 3 == 0){
              // the number is evenly divisible by three
          } else {
              // the number is not evenly divisible by three
          }
          

          如果 mod 运算的结果为 0,则被除数 (number) 可以被除数整除。

          您可以利用此功能在表格数据上执行“钢琴键”样式的交替行阴影,或每 X 行打印新的列标题,或者您有什么。

          【讨论】:

            【解决方案10】:

            72 分钟模 60 = 12 分钟后

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-11-30
              相关资源
              最近更新 更多