zoukankan      html  css  js  c++  java
  • 余数

    本篇博客在于理清比较困扰的负数求余运算或者取模运算!!!!

    1、基本概念

    余数,数学用语。在整数的除法中,只有能整除与不能整除两种情况。当不能整除时,就产生余数,取余数运算:a mod b = c(b不为0) 表示整数a除以整数b所得余数为c,如:7÷3 = 2 ······1。

    百度百科对余数的解释:

    https://baike.baidu.com/item/%E4%BD%99%E6%95%B0/6180737?fr=aladdin

    以下为在网上搜索及自己理解所整理!!!!!!!!!!!!

    2、通常余数求取的理解

    变量说明:

    n:num,表示一个整数,在这里代表被除数(dividend)

    q:quotient,表示两数相除的商

    d:divisor,表示除数,为非0整数

    r:remainder,表示余数

    这四者满足以下关系:

    • a = q*d+r
    • 0 <= |r| < |d|

    通常会有正余数r1与负余数r2两个余数,且满足:

    • |d| = |r1| + |r2|

    在计算机语言中,

    同号整数运算通常都遵循商尽可能小原则,所以11mod10 (或11%10,后边表达式类似) 结果为1,此处没有异议;-11mod-10,商为1,余数为-1

    异号整数运算中,python遵循商尽可能小原则,比如:-1 mod 10 ,商为-1,余数为9;1 mod -10 ,商-1,余数为-9

    c/c++ 和java遵循商尽可能大原则 ,比如:-1 mod 10 ,商为0,余数为-1;1 mod -10 ,商0,余数为1

    在以上理解的基础上在此说明“求余”与“取模”两者的区别:

    3、“求余”与“取模”两者的区别

    对整型变量n、d来说,求余运算和取模运算的公式都是:

    1.求整数商:q=n/d;

    2.计算余数或者模:r=n-q*b。

    两种运算在第一步时就产生了不同的结果:求余运算在取q的值时,向正无穷方向舍入(商尽可能大);而取模运算在计算q的值时,向负无穷方向舍入(商尽可能小)。

    例如:计算-9 mod 5

    设a=-9,b=5

    1.求整数商:求余运算得q=-1(向0方向舍入);取模运算得q=-2(向负无穷方向舍入)。

    2.计算余数或者模:由于c值不同,求余得r=-4;取模得r=1。

    归纳:

    n和d符号相同时,求余和取模结果相同;

    n和d符号不同时,求余结果的符号和n相同,取模结果的符号和d相同。

    另外不同环境下“%”运算符的含义也不同:

    1.c/c++、Java为求余

    2.Python为取模

    python实例:

    print(1%10)
    print(-1%10)
    print(1%-10)
    print(-11%-10)

    执行结果:

     java实例:

    public static void main(String[] args) {
    	System.out.println(1%10);
    	System.out.println(-1%10);
    	System.out.println(Math.floorMod(-1,10));
    	System.out.println(1%-10);
    	System.out.println(Math.floorMod(1,-10));
    	System.out.println(-11%10);
    }
    

      

    java执行结果:

    参考:

    https://blog.csdn.net/weixin_44252966/article/details/85248165

    https://www.jianshu.com/p/cdc6f7a061b4

    https://blog.csdn.net/h2453532874/article/details/88372376?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1

    >
    作者:豌豆果果
    出处:https://www.cnblogs.com/hylogs/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    觉得有所帮助,可以请果果喝咖啡哟^_^!

  • 相关阅读:
    测试方法与步骤
    团队项目需求分析
    第一次个人作业
    3种shell自动交互的方法
    mysql用户管理
    build web application with golang
    安卓中的LINUX内核
    结对项目小结
    关于aria2-yaaw下载软件
    软工结对项目预览
  • 原文地址:https://www.cnblogs.com/hylogs/p/12822870.html
Copyright © 2011-2022 走看看