Все в двоичном представлении

1

Я провел несколько примеров в книге "Разбивка книги для кодирования". В главе о манипуляции бит автор использовал следующее, чтобы создать все двоичное представление

int allOnes = ~0;

Мне просто интересно, почему мы просто не можем

int allOnes = -1;
Теги:
binary

1 ответ

2
Лучший ответ

Ты можешь. Попробуй и посмотри

System.out.println(Integer.toBinaryString(-1));
System.out.println(Integer.toBinaryString(~0));
System.out.println(~0);

Выход (как вы могли догадаться)

11111111111111111111111111111111
11111111111111111111111111111111
-1

Потому что ~0 - -1. JLS -1 5.15.5. Побитовое приложение дополнения ~ говорит (частично),

Во время выполнения значение унарного поразрядного выражения дополнения является поразрядным дополнением к продвинутому значению операнда. Во всех случаях ~ x равно (-x) -1.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню