Java は、基本的な型であるバイト データ型も提供します。 Java バイトは最小の数値として処理されるため、その値の範囲は符号付きバイトである -128 ~ 127 として定義されます。以下の記事ではJavaのバイト型に関する情報を中心に紹介していますので、困っている方は参考にしてみてください。
【推奨学習: Java ビデオ チュートリアル 】
はじめに
byte、つまりバイトは8ビットのバイナリで構成されます。 Java では、バイト型データは 8 ビットの符号付き 2 進数です。
コンピュータでは、8 ビットの符号付き 2 進数の値の範囲は [-128, 127] であるため、Java のバイト型の値の範囲も [-128, 127] です。
値の範囲分析
なぜ -128 から 128 ではないのか疑問に思っています。今日はこの問題を分析しました。
まず、次の操作規則を理解する必要があります。
正の数の最上位ビットは 0、正の数の値は 0 です。はバイナリで表される値です。
負の数値の最上位ビットは 1 です。負の数値を反転して 1 を加え、さらに負の符号を追加して値を取得します。
このルールを説明するために 8 ビット バイナリを使用します:
例: 00000001。最上位ビットが0の場合は正の数なので、10進数で1を表します。
別の例: 10000001。最上位ビットは 1 で、負の数です。値は何ですか?これを否定して 01111110 を取得し、1 を追加して 01111111 を取得すると、値は -127
この演算ルールを理解して、バイト (正確に 8 ビットの 2 進数) について正式に話し始めます。 short は 16 ビット、int は 32 ビット、long は 64 ビットです。
正の最大バイト数が 01111111 (最上位ビットは 0 でなければなりません)、つまり 127 であることを理解するのは難しくありません。
じゃあ、最小の負のバイト数は 11111111 だと思うかもしれませんね? そう思ったら、それは完全に間違いです。 2 進数 11111111 が何を表すかを見てみましょう。
上記のヒントによると、これは負の数であることがわかります。その値は最初に否定され、次に 1 が追加されます。
11111111 を反転すると 00000000 が得られ、1 を追加すると 00000001 が得られます。取得される最終値は -1 です。
これは最大の負の数です。このことから、負の数の最小値は 10,000,000 であると考えたことはありますか?
計算して否定しましょう: 01111111、1 を足して 10000000、そして最後に -128 を取得します。
127 は 01111111 ですが、-128 は 10000000 です。奇妙なことがわかります。
これら 2 つの 2 進数をよく見てください。前者に 1 を足すと後者が得られますか?右。
実験用の小さなプログラムを作成できます:
byte a = 127; a+=1; System.out.println(a);
結果は正確に -128
ここから、2 進数の範囲が 00000000 ~ 01111111 ~ 10000000 であることがわかります。 to 11111111
つまり、10 進数の範囲は 0 ~ 127 ~ -128 ~ -1 です。
次に、バイトをより深く理解するためにコードを使用します: public class A {
public static void main(String[] args) {
int b = 456;
byte test = (byte) b;
System.out.println(test);
}
}
上記のコードは最終的に -56 を出力します。その理由は次のとおりです:
456 のバイナリ表現は 111001000 です。int は 32 ビット バイナリなので、コンピュータでは実際には 00000000000...111001000 になります。int をバイトに変換すると、コンピュータは最後の 8 桁は 11001000 のみを保持します。
この場合、11001000 の最上位ビットは 1 で、これは負の数であることを意味します。負の数はコンピューターでは 2 の補数形式で格納されるため、11001000 の元のコードは 00111000 (つまり 56) として計算されます。 so 11001000 これは -56 を表すため、最終テスト値は -56 になります。
この記事は
Java 入門以上がJavaのバイト型の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。