【Java】取模(Math.floorMod())和取余(%)

例子

public static void main(String[] args) {
    System.out.println("------Complementation------");
    System.out.println(7 % 4);
    System.out.println((-7) % 4);
    System.out.println(7 % (-4));
    System.out.println((-7) % (-4));

    System.out.println();
    System.out.println("------Modulo Operation------");
    System.out.println(Math.floorMod(7, 4));
    System.out.println(Math.floorMod(-7, 4));
    System.out.println(Math.floorMod(7, -4));
    System.out.println(Math.floorMod(-7, -4));
}

输出结果为:

------Complementation------
3
-3
3
-3

------Modulo Operation------
3
1
-1
-3

取余结果的符号和 a 一致,取模结果的符号和 b 一致。
当两个数字都是正数或都是负数时,结果是一样的。

取余

取余的计算公式为 a - (int)(a / b) * b
这里 (int) 是向 0 取整的。

取模

取模的计算公式为 a - (floor)(a / b) * b
floor 是向 负无穷 取整的。

造成差别的原因

当 a 和 b 符号不同时,a / b 是负数,(int)向0取整,(floor)向下取整,导致取余的结果 < 取模的结果。

参考资料

Java中的取模(Math.floorMod())与取余(%)
取模(Mod)和取余(%)的 区别 和 转化(超详细解释)

关于Java取模运算定律,一般我们使用符号“%”来表示取模运算,它的结果就是余数,例如a%b表示a除以b的余数。Java取模运算定律包括以下几点: 1. a % b 的结果一定小于 b。 2. 当 a % b 的结果为0时,说明a能够被b整除。 3. 当a、b都为正数时,a % b 的结果与a的符号相同;当a、b中有一个为负数时,a % b 的结果与a的符号相反。 4. 取模运算可以用来判断一个数是奇数还是偶数,具体做法是将该数与1进行取模运算,如果余数为0,则该数为偶数,否则为奇数。 椭圆曲线算法(ECC)是一种公钥密码学算法,它利用椭圆曲线上的点加法运算和数乘运算来实现加密和解密。ECC具有密钥短、安全性高、运算速度快等优点,因此广泛应用于移动设备等资源受限的环境中。 ECC的基本原理是利用椭圆曲线上的点加法运算和数乘运算来实现密钥的生成和加解密。其中,点加法运算是指将两个点在椭圆曲线上相交的位置相加,得到另一个在椭圆曲线上的点。数乘运算是指将一个点在椭圆曲线上重复相加若干次,得到另一个在椭圆曲线上的点。 ECC的安全性基于数论难题,即椭圆曲线离散对数问题。具体来说,给定一条椭圆曲线和其中的一个点P,找到一个整数n,使得nP等于另一个给定的点Q,称为椭圆曲线离散对数问题。目前,尚未找到有效的算法来解决这个问题,因此ECC被认为是一种安全性较高的公钥密码学算法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wei *

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值