Оператор побитового комплимента ~
инвертирует все биты своего операнда.Таким образом, предполагая, что int
составляет 32 бита, двоичное значение:
00000000 00000000 00000000 00100011
становится таким после применения ~
:
11111111 11111111 11111111 11011100
Предполагая, что отрицательные числа представлены в представлении дополнения до двух,это значение равно -36.
Ожидаемое значение 222 в двоичном виде выглядит следующим образом: int
:
00000000 00000000 00000000 11011110
Таким образом, вы ожидаете, что только самый младший байтинвертируется, но вместо этого биты во всех байтах инвертируются.