1

理論的に整数をバイトに変換する方法を知りたいです。つまり、事前定義されたプログラムを使用したくないのですが、それを実装する方法を知りたいだけです。-128から127までの整数はバイトと同じですが、問題は128から128から+無限、-129から-無限です。たとえば、次のコードがあるとします。

    Integer a = 140;//10001100 this is his binary conversion
    Byte zz = (byte) a.byteValue();
    System.out.println(zz);// result is -116

その変換はJavaでどのように機能しますか? 前もって感謝します

4

4 に答える 4

3

その値は の範囲外であるByteため、オーバーフローします。

JLS 4.2.1を参照してください。

整数型の値は、次の範囲の整数です。

  1. バイトの場合、-128 から 127 まで (両端を含む)

バイトは8ビットで、最上位ビットは数値の符号を指定し、2 の補数でエンコードされます。

詳細については、この素晴らしいSO の回答をお読みください。

于 2013-07-24T10:06:15.723 に答える
1

プリミティブを狭めているときは、明示的にキャストする必要があります。そのため、データが失われる可能性があることを認めます。

値が -128 ~ 127 バイトの値の範囲内にある場合、損失はありません

于 2013-07-24T10:18:03.850 に答える
1

バイト値のバイナリ表現は変更されませんが、2 の補数表現http://en.wikipedia.org/wiki/Twos_complementの符号付き型であり、ビット 7 が設定されているため10001100、異なる解釈が行われます。今は負の数です -116byte

于 2013-07-24T10:14:11.273 に答える