Java でバイトを符号なしバイトに変換する

Haider Ali 2023年10月12日
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 の符号なしバイトの詳細についてはこちらをご覧ください。

著者: Haider Ali
Haider Ali avatar Haider Ali avatar

Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.

LinkedIn

関連記事 - Java Bytes