1. ホーム
  2. java

[解決済み] Javaでunsigned intを宣言する

2022-03-10 01:55:07

質問

Javaでunsigned intを宣言する方法はありますか?

あるいは、質問はこのようにも組み立てられるかもしれない。 Javaでunsignedに相当するものは何ですか?

文脈を説明すると、私はJavaの実装である String.hashcode() . 整数が32個のunsigned intだった場合に衝突する可能性をテストしたかったのです。

どのように解決するのですか?

Java には、以下のようなデータ型がありません。 符号なし整数 .

を定義することができます。 long の代わりに int 大きな値を格納する必要がある場合

また、符号付き整数を符号なしと同じように使用することもできます。のメリットは 2の補数表現 は、ほとんどの演算(加算、減算、乗算、左シフトなど)が、符号付き整数と符号なし整数のバイナリレベルで同じであることです。しかし、いくつかの演算(除算、右シフト、比較、キャスト)は異なります。Java SE 8では,符号付き整数のための新しいメソッドが追加されました。 Integer クラスを使用すると int データ型 符号なし算術を実行する :

Java SE 8以降では、intデータ型を使用して、最小値0、最大値2^32-1の符号なし32ビット整数を表現することができます。intデータ型を符号なし整数として使用するには、Integerクラスを使用します。のような静的メソッドは compareUnsigned , divideUnsigned などが Integer クラスに追加され、符号なし整数の算術演算をサポートするようになりました。

なお int 変数は宣言された時点ではまだ符号付きですが、符号なし演算が可能になりました。 Integer クラスがあります。