Я использую операцию ~
для манипуляций с битами, и мне просто интересно, как Java вычисляет отрицательное число?Как Java вычисляет отрицательные числа?
Я проверил документацию Java:
«Унарное поразрядное дополнение„~“инвертирует битовый шаблон, он может быть применен к любому из целочисленных типов, что делает каждый„0“„1“ и каждый «1» a «0». Например, байт содержит 8 бит, применяя этот оператор к значению, бит-бит которого «00000000» изменит его шаблон на «11111111» ».
Так что если int a = 60 (0011 1100)
, то int c = ~a (1100 0011)
.
Вопрос в том, как Java вычисляет отрицательные числа так, чтобы 1100 0011 = -61
? Единственный способ 1100 0011
рассчитывается -61
является
- старший бит является знаковым битом.
-2^6 + 2^1 + 2^0 = -61
.
Но для меня это не имеет никакого смысла.
You 'на правильном пути, причем старший бит является битом знака. См. [Дополнение от 2] (http://en.wikipedia.org/wiki/Two's_complement). – rgettman
бит-бит используется для double и float, что означает, что у вас 0.0 и -0.0, целые числа не выполняются таким образом, а 'char' - без знака. –