Java で unsigned int を宣言する方法はありますか?
あるいは、次のように質問することもできます: Java で unsigned に相当するものは何ですか?
背景を説明すると、私は の Java 実装を調べていましたString.hashcode()
。整数が 32 unsigned int の場合に衝突が発生する可能性をテストしたかったのです。
ベストアンサー1
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
。