2014-02-25 4 views
0

У меня есть ИНТ a=255=>1111 1111 после отрицая ИЭ ~a=10000 0000=>-64
разве это suposed быть 0000 0000=>0
в основном хочет ~255 to 0 как в 8 битном двоичном формате, т.е.
1111 1111 to 0000 0000 с вне делают его отрицательный.спутанности отрицания выхода междунара в Java

+2

пожалуйста, покажите нам свой код. как вы отрицаете? –

+0

также: целое число имеет 4 байта –

+1

ответ здесь http://stackoverflow.com/questions/15575520/bitwise-negation-gives-unexpected-result –

ответ

5

Проблема в том, что a, вероятно, имеет тип int, который в Java занимает 4 байта. Так что вы получаете это:

1111 1111 1111 1111 1111 1111 0000 0000 

Вы должны просто маскирует результат, если вы знаете, что вы всегда будете работать с 8 битами:

int b = ~a^0xFF; 
+0

спасибо, что я не знал об исключении маскировки объектов int. – Dhroiden

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