Бинарное отрицание ~a

Рейтинг: 0Ответов: 1Опубликовано: 06.03.2015

Кто-нибудь может объяснить (мне :) ), почему строчки

int a = 1010;
int b = ~a;
System.out.println(" int a = " + a);
System.out.println(" int ~a = " + b);

Дают результат

      int ~a = -1011

А не ожидаемый мной результат

   int ~a = 0101

?

Ответы

▲ 1

Поскольку 0b1010 32-битное, то оно на самом деле равно

00000000 00000000 00000000 00001010

и его отрицание есть

11111111 11111111 11111111 11110101

Но у вас, как првильно замечено, даже не 0b1010.