以下のエディターは、Java5c699fe59dd7ce715253b736c25509d2>、>>> のシフト操作メソッドに関する記事を提供します。編集者はこれがとても良いものだと思ったので、皆さんの参考として今から共有します。エディターに従って見てみましょう
5bcc6831e9088d2ecd1cb92178896686>、符号付き右シフトは、オペランドのバイナリ値全体を指定された桁数だけ右にシフトし、整数の上位ビットに 0 を埋め込み、負の数の上位ビットに 1 を埋め込みます (負の数の符号は変更されません)。
int rightShift = 10; System.out.println("十进制:" + rightShift + ", 二进制:" + Integer.toBinaryString(rightShift)); int newRightShift = rightShift >> 2; System.out.println("右移2位后十进制:" + newRightShift + ", 右移2位后二进制" + Integer.toBinaryString(newRightShift)); //右移n位后的运算数x十进制结果,x = x / 2
上記は正の整数であり、演算結果は以下の通りです。
次に、負の数を右に 2 ビットシフトするとどうなるかを見てみましょう。演算の結果は次のようになります。
負の数の符号付き右シフトの基本原理は左シフトと同じです。違いは結果の計算です。これは符号付き右シフトであるため、右シフトの最終結果は次のようになります。 -1。要約すると、オペランドが偶数の場合、演算結果は x = -(|x| / 2) になります。オペランドが奇数の場合、演算結果は x = -(|x| / 2) となります。 ) - 1.
> 右シフトと > > 符号付き右シフトの計算結果は同じです
int rightShift = 10; System.out.println("十进制:" + rightShift + ", 二进制:" + Integer.toBinaryString(rightShift)); int newRightShift = rightShift >>> 2; System.out.println("右移2位后十进制:" + newRightShift + ", 右移2位后二进制" + Integer.toBinaryString(newRightShift)); //右移n位后的云算数x十进制结果,x = x / 2
上記は正の整数であり、演算結果は次のようになります。
次に、負の整数を見てみましょう。演算結果は次のようになります。
符号なしシフト後のバイナリと符号付きシフト後のバイナリは同じように見えますが、結果は大きく異なります。符号付き右シフト演算は、実際には符号、つまり上位ビットを無視した算術演算であることに注意してください。一律に0を埋めます。
以上がJavaのシフト操作メソッド(<<、>>、>>>)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。