[解決済み] Java 8とJava 9で符号なし整数を使用するには?
質問
Oracleのquot;Primitive data types"で。 ページ のページでは、Java 8 が符号なし int と long のサポートを追加することに言及しています。
int
: デフォルトではint
のデータ型は 32 ビット符号付き 2 の補数で、最小値は -2 です。 31 であり,最大値は 2 31 -1. Java SE 8 以降ではint
データ型を使用して符号なし32ビット整数を表し、最小値0、最大値2です 32 -1. を使用します。Integer
クラスを使用することでint
のデータ型を符号なし整数とします。詳細は、「数値クラス」のセクションを参照してください。のような静的メソッドはcompareUnsigned
,divideUnsigned
などが追加されInteger
クラスが追加され、符号なし整数の算術演算がサポートされるようになりました。
long
: はlong
のデータ型は64ビットの2の補数整数である。符号付きのlong
は最小値として -2 63 であり、最大値は 2 63 -1. Java SE 8 以降では、"strong" の代わりにlong
データ型を使用して、符号なし64ビットを表すlong
であり、最小値0、最大値2です。 64 -1. intが提供する値よりも広い範囲の値が必要な場合に、このデータ型を使用します。またLong
クラスには、次のようなメソッドもあります。compareUnsigned
,divideUnsigned
などで、符号なし演算をサポートするlong
.
しかし、unsigned longやintegerを宣言する方法が見当たりません。たとえば、次のコードは、範囲内にあるはずのリテラル (割り当てられた値は正確に 2) が、コンパイラ エラー メッセージ "the literal is out of range" (もちろん、Java 8 を使用しています) になっています。 64 -1):
public class Foo {
static long values = 18446744073709551615L;
public static void main(String[] args){
System.out.println(values);
}
}
では、unsigned intやlongを宣言する方法はあるのでしょうか?
どのように解決するのですか?
投稿されたドキュメントによると このブログの記事 - を見ると、プリミティブを宣言する際に符号なしint/longと符号ありint/longに違いはないようです。 新しいサポートは、Integer および Long クラスに静的メソッドが追加されたことです。 Integer.divideUnsigned . これらのメソッドを使用していない場合、2^63-1 以上の "unsigned" long は負の値を持つ単なる古い long になります。
ざっと見たところ、+/- 2^31-1、またはlongの場合は+/- 2^63-1の範囲外の整数定数を宣言する方法がないように見えます。 範囲外の正の値に対応する負の値を手動で計算する必要があります。
関連
-
Eclipse問題 アクセス制限。タイプ 'SunJCE' が API でないことを解決し、/jdk ディレクトリにある /jre と jre の違いについて理解を深める。
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
NullPointerException - java.lang.
-
XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。
-
ブートレイヤーの初期化中にエラーが発生しました java.lang.module.FindException: モジュールが見つかりません
-
ApplicationContextの起動エラーです。条件レポートを表示するには、アプリケーションを'de'で再実行します。
-
SpringBoot 起動エラー java.nio.charset.MalformedInputException: 入力長 = 2 解決
-
XXX型を囲むインスタンスがJavaでアクセスできない
-
Server Tomcat v9.0 Server at localhost の起動に失敗しました。
-
Java:未解決コンパイル問題の解決方法
-
Java JDKのダイナミックプロキシ(AOP)の使用と実装の原理分析
-
[解決済み] Javaでunsigned intを宣言する