回答編集履歴

1 盛大な間違いをしていたため修正

swordone

swordone score 19974

2016/01/28 23:42  投稿

Javaでbyteは2の補数表現で-128~127の範囲しか表現できないためです。
255は2進数で11111111で、先頭ビットが1の場合は負の数として認識されるため、
intの255をbyteにキャストすると-128になるのです。
255は2進数で11111111で、これは8ビットの2の補数では-1を表します。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る