Java で long の特定のビットを表示するマスクを作成しようとしています。私は次のことを試しました:
long mask = ~ (0xffffffff << 32);
これをコンソールに出力すると 0 が返されますが、結果は 0x00000000FFFFFFFFL のようになり、2^32 - 1 は 4294967295 に等しいため、4294967295 が期待されます。長いマスクをシフトすると機能しますが、理由がわかりません。
long mask = ~ (0xFFFFFFFFFFFFFFFFL << 32);
誰でもこの動作を説明できますか?