Javaの左のシフト演算
1802 ワード
私たちはaを知っています ,見ることができる aに2を掛けるb乗
例
上記の例により、Javaでは演算の結果が整数タイプによって制限されることがわかった。
3<<30:
longである場合、a<intの場合、a< 2の30乗 バイナリでは0100 0000 0000 0000 0000 0000 0000 0000で表されています。
2の30乗に3を掛け、2進法では上のものに2回を加えると、1回を加えると最高位が1000になります。(略28個の0) もう1回プラスしてなります 1100……(略28個の0)
1100……(略28個の0) integerは32位、32位は符号を同時に表し、0は正、1は負を表します。
この時に表示される値はIntegerの最小値より小さいので、最高値の表示を削除する必要があります。
残りの 100.(略28個の0)は値で、つまり2の30乗、符号は負です。 -1*Math.pow(2,30)は、タイプがintegerの場合3<<30>と同じです。
a<=32)の場合:
2の32乗はバイナリで、1の後ろと32個の0があります。この時、integerでは、上の法則に従い、32桁を超えるのは0を32個しか見られません。それは0です。
a<<32はa<0はaに2を掛けた0乗です。
例えば左に33桁移動すると32桁先に左に1桁移動しますので、あります。 a<((b%32) b>=32の場合
例
long a = 0x3;
long b = 30;
long longLeft = a << b;
System.out.println(longLeft);
System.out.println(0x3 << 30);
System.out.println("-----");
System.out.println(Math.pow(-2, 31));
System.out.println(Integer.MIN_VALUE);
System.out.println("-----");
System.out.println(Math.pow(2, 31) - 1);
System.out.println(Integer.MAX_VALUE);
結果3221225472
-1073741824
-----
-2.147483648E9
-2147483648
-----
2.147483647E9
2147483647
上の結果のe 9は、10を乗じた9乗を表します。上記の例により、Javaでは演算の結果が整数タイプによって制限されることがわかった。
3<<30:
longである場合、a<intの場合、a< 2の30乗 バイナリでは0100 0000 0000 0000 0000 0000 0000 0000で表されています。
2の30乗に3を掛け、2進法では上のものに2回を加えると、1回を加えると最高位が1000になります。(略28個の0) もう1回プラスしてなります 1100……(略28個の0)
1100……(略28個の0) integerは32位、32位は符号を同時に表し、0は正、1は負を表します。
この時に表示される値はIntegerの最小値より小さいので、最高値の表示を削除する必要があります。
残りの 100.(略28個の0)は値で、つまり2の30乗、符号は負です。 -1*Math.pow(2,30)は、タイプがintegerの場合3<<30>と同じです。
a<=32)の場合:
2の32乗はバイナリで、1の後ろと32個の0があります。この時、integerでは、上の法則に従い、32桁を超えるのは0を32個しか見られません。それは0です。
a<<32はa<0はaに2を掛けた0乗です。
例えば左に33桁移動すると32桁先に左に1桁移動しますので、あります。 a<((b%32) b>=32の場合