java 取模 与 取余_Java中的取模、取余和位移

1.取模 (a mod b)

System.out.println("10 mod 3 = " + Math.floorMod(10, 3));

System.out.println("10 mod (-3) = " + Math.floorMod(10, -3));

System.out.println("(-10) mod 3 = " + Math.floorMod(-10, 3));

System.out.println("(-10) mod (-3) = " + Math.floorMod(-10, -3));

结果

56c075a57ed3

取模运算

结论

取模运算结果的符号与b的符号一致。

2.取余(a % b)

System.out.println("10 % 3 = " + (10 % 3));

System.out.println("10 % (-3) = " + (10 % (-3)));

System.out.println("(-10) % 3 = " + ((-10) % 3));

System.out.println("(-10) % (-3) = " + ((-10) % (-3)));

结果

56c075a57ed3

取余

结论

取余运算结果的符号与a的符号一致。

3.左移(a << b)

// -----------integer--------------

System.out.println("10 << 3 = " + (10 << 3));

System.out.println("10 << (-3) = " + (10 << (-3)));

System.out.println("10 << 29 = " + (10 << 29));

System.out.println("(-10) << 3 = " + ((-10) << 3));

System.out.println("(-10) << (-3) = " + ((-10) << (-3)));

System.out.println("(-10) << 29 = " + ((-10) << 29));

// ----------- long --------------

System.out.println("10L << 3 = " + (10L << 3));

System.out.println("10L << (-3) = " + (10L << (-3)));

System.out.println("10L << 61 = " + (10L << (-3)));

System.out.println("(-10L) << 3 = " + ((-10L) << 3));

System.out.println("(-10L) << (-3) = " + ((-10L) << (-3)));

System.out.println("(-10L) << 61 = " + ((-10L) << (-3)));

结果

56c075a57ed3

左移

结论

a扩大相应倍数,且结果符号保持不变右侧补0,当b<0时,取(b mod 32)或(b mod 64)。

4.右移(a >> b)

// -----------integer--------------

System.out.println("10 >> 3 = " + (10 >> 3));

System.out.println("10 >> (-3) = " + (10 >> (-3)));

System.out.println("10 >> 29 = " + (10 >> 29));

System.out.println("(-10) >> 3 = " + ((-10) >> 3));

System.out.println("(-10) >> (-3) = " + ((-10) >> (-3)));

System.out.println("(-10) >> 29 = " + ((-10) >> 29));

// ----------- long --------------

System.out.println("10L >> 3 = " + (10L >> 3));

System.out.println("10L >> (-3) = " + (10L >> (-3)));

System.out.println("10L >> 61 = " + (10L >> (-3)));

System.out.println("(-10L) >> 3 = " + ((-10L) >> 3));

System.out.println("(-10L) >> (-3) = " + ((-10L) >> (-3)));

System.out.println("(-10L) >> 61 = " + ((-10L) >> (-3)));

结果

56c075a57ed3

右移

结论

a缩小相应倍数,且结果符号保持不变左侧补0,当b<0时,取(b mod 32)或(b mod 64)。

5.无符号右移(a >>> b)

// -----------integer--------------

System.out.println("10 >>> 3 = " + (10 >>> 3));

System.out.println("10 >>> (-3) = " + (10 >>> (-3)));

System.out.println("10 >>> 29 = " + (10 >>> 29));

System.out.println("(-10) >>> 3 = " + ((-10) >>> 3));

System.out.println("(-10) >>> (-3) = " + ((-10) >>> (-3)));

System.out.println("(-10) >>> 29 = " + ((-10) >>> 29));

// ----------- long --------------

System.out.println("10L >>> 3 = " + (10L >>> 3));

System.out.println("10L >>> (-3) = " + (10L >>> (-3)));

System.out.println("10L >>> 61 = " + (10L >>> (-3)));

System.out.println("(-10L) >>> 3 = " + ((-10L) >>> 3));

System.out.println("(-10L) >>> (-3) = " + ((-10L) >>> (-3)));

System.out.println("(-10L) >>> 61 = " + ((-10L) >>> (-3)));

结果

56c075a57ed3

无符号右移

结论

a缩小相应倍数,左侧所有位补0,当b<0时,取(b mod 32)或(b mod 64)。

6.其他整数的位移(char、byte、short)

System.out.println("(char)10 << (-3) = " + ((char)10 << (-3)));

System.out.println("(byte)10 << (-3) = " + ((byte)10 << (-3)));

System.out.println("(short)10 << (-3) = " + ((short)10 << (-3)));

System.out.println("10 << (-3) = " + (10 << (-3)));

System.out.println("10 << 29 = " + (10 << 29));

结果

56c075a57ed3

其他整数位移

结论

其他整数(char、byte、short)位移时,先转化为int,然后再按照int的位移规则进行位移,并且其结果是int类型。

7.浮点数位移(float、double)

浮点数(float、double)不支持位移操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值