誰かが、私たちが式を使用することができ、Javaの符号なしバイトに符号付きバイトを変換することを私に言った式unsignedByte = signedByte> = 0を使用して符号付きバイトを符号なしバイトに変換しますか? signedByte:256 + signedByte;
int unsignedByte = signedByte >= 0 ? signedByte : 256 + signedByte;
しかし、例えば、私は-128から1(バイト値の範囲のsignedByte値を持っている場合〜127)、この式を使用するので、1 >= 0
はtrue
と評価されます。したがって、最初の式が使用され、1 + 1
となり、これは2
に等しくなります。しかし、私はunsignedByteで129で表される同じ数字を期待していた?
私の理解に間違っていますか、この数式は間違っていますか?
実際の符号付きの値と符号なしの値を使用した例をお待ちしております。
したがって、signedByte> = 0の場合、int unsignedByte = 1と評価されます。しかし、私はint unsignedByteは129と等しいと思った? – Thor
* "unsignedByte = 1?しかし、私はint unsignedByteは129と等しいはずだと思いましたか?" *いいえ、間違っています。 https://en.wikipedia.org/wiki/Two%27s_complement –
ちょうど安全であるように、 '256 + signedByte'を常に括弧でくくって、疑いの余地をなくすことができます。 –