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));
結果
取模運算
結論
取模運算結果的符號與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)));
結果
取余
結論
取余運算結果的符號與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)));
結果
左移
結論
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)));
結果
右移
結論
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)));
結果
無符號右移
結論
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));
結果
其他整數位移
結論
其他整數(char、byte、short)位移時,先轉化為int,然后再按照int的位移規則進行位移,并且其結果是int類型。
7.浮點數位移(float、double)
浮點數(float、double)不支持位移操作。
總結
以上是生活随笔為你收集整理的java 取模 与 取余_Java中的取模、取余和位移的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华中中科技大学php,华中科技大学船舶与
- 下一篇: 解决SVN冲突的方法