zoukankan      html  css  js  c++  java
  • 取模与求余的差别

    2017-05-02

    不同PL对%的作用有不同规定。先来看看数学上的定义。

    对于整型数a,b来说,取模运算(modulo)或者求余运算(remainder)的方法都是:

    1. 求 整数商: c = a/b;
    2. 计算模或者余数: r = a - c*b.

    求模运算和求余运算在第一步不同:

    1. 取余运算:在取c的值时,向0 方向舍入(fix)。
    2. 取模运算:在计算c的值时,向负无穷方向舍入(floor,也做向下舍入,地板除。相对应的,还有个ceiling,向上舍入)

    %的作用:

    1. C/Java:要先理解到C的整除a/b是直接舍弃小数部分,也就是truncate toeard zero的。所以显然c的%是rem运算。
    2. Python:py3的整除a//b是floor,也就是向下舍入。所以py的%是mod运算。

    实际应用上,只在a和b异号时,rem和mod才存在差别(c才会不同)。这时候,c肯定为负或0(因为a b异号):

    1. rem:向0取整使|cb| <|a|,r=a-cb与a同号。
    2. mod:向下取整使|c*b|>|a|,而c确定为负,因此r与b同号。
  • 相关阅读:
    UVa 541 Error Correction
    UVa 11045 My T-shirt suits me
    【模板】Ford-Fulkerson算法
    POJ 1273 Drainage Ditches
    UVa 10158 War
    UVa 658 It's not a Bug, it's a Feature!
    【模板】并查集
    【模板】Floyd-Warshall算法
    UVa 10034 Freckles
    UVa 10048 Audiophobia
  • 原文地址:https://www.cnblogs.com/kirito-c/p/10305903.html
Copyright © 2011-2022 走看看