2014-01-05 1 views

ответ

4

Поскольку с большинством Java операторов (~ включен), целочисленные операнды promoted перед применением оператора. Таким образом, byte - int; ваш код эквивалентен следующему:

b = (byte) ~((int) b); 

Поэтому в целом, назначая назад к byte потеряет информацию в старших битах. (Хотя в этом случае это довольно бессмысленно.)

4

Поскольку ~ б будет конвертировать/продвигать б в целое перед нанесением ~.

Фактически, что незримо происходит, это что-то вроде этого.

~((int)b); 

Таким образом, результат имеет тип int.

И поэтому вам нужно вернуть обратно в байт.

См. JLS для получения более подробной информации.

http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.15.5

Смежные вопросы