HOWTO · Java
Java でバイトを符号なしバイトに変換する
Java でバイトを符号なしバイトに変換する方法を理解する
このページの内容
Java でバイトを符号なしバイトに変換する方法の概念を理解するには、いくつかの低レベルのコンピューターの概念に精通している必要があります。変換、ビット、バイト、ワードなどについてすべて知っておく必要があります。すぐに飛び込みましょう。
Java でバイトを符号なしバイトに変換する
1 バイトには 8 ビットあり、符号付きバイトと符号なしバイトの範囲を計算する式は次のとおりです。
Signed Number min = -1 * 2 ^ (N - 1) = -1 * 2 ^ (7) = -128 max = 2 ^ (N - 1) - 1 = 2 ^ 7 - 1 = 127
Unsigned Number min = 0 max = 2 ^ (N) -1 = 2 ^ (8) - 1 = 255
// N is the number of bits
符号付き数値の範囲が狭い理由は、1 ビットが符号付きシンボルを表示するために予約されているためです。そのため、範囲は-128〜127 です。符号なし数値に関しては、Java には符号なしバイトはありません。では、Java でそれらを作成するにはどうすればよいでしょうか。
符号なしバイトを作成するには、それらを新しい整数(int)にキャストし、その整数を 0xff でマスク(ビット単位の AND)します。そうすれば、最後の 8 ビットを取得して、符号拡張を防ぐことができます。ご存知のように、0xFF = 1111 1111 は、元のバイトとのビット単位の AND 演算の後、符号なしバイトを提供します。
覚えているかと思いますが、符号付きビットに関しては、左側のビットはすべて 1 です。ビット単位の AND 演算により、それらは 0 になります。これは、符号なし数値の表現です。次のコードを見てください。
import javax.swing.GroupLayout.Alignment;
// library to perform this task
public class Main {
public static void main(String[] args) {
byte byteData = -3; //-3 SIGNED 253 UNSIGNED Byte
int Data = byteData & 0xff;
System.out.println(Data);
}
}
出力:
253
これは非常に単純な手順ですが、その概念は少し複雑です。Java の符号なしバイトの詳細についてはこちらをご覧ください。