Запись 2-дополняющего байта Java

#java #binary

#java #двоичный

Вопрос:

В Java, если вы хотите записать число, используя его двоичное представление, вы можете написать

  System.out.println(0b0001); 
  

Который выведет 1

Если вы напишете конкретно 32 бита, он будет интерпретировать это как 2-дополняющий ie:

 System.out.println(0b11111111111111111111111111111110);
  

Выведет -2

Как я мог бы написать 2-дополнение для числа, которое не является 32-битным? (в частности, для числа больше 32 бит, например, long)

Ответ №1:

Вы должны поставить L после него, указывая, что это long .

 long val  =0b111111111111111111111111111111111111111111111111111111111101100L;
System.out.println(val);
  

С принтами

 -20
  

Комментарии:

1. Да, я знаю, как сделать long, но это не 2-дополнение, а просто число, если бы оно было закодировано с 2 дополнениями, оно было бы отрицательным, поскольку начиналось с 1

2. Я изменил свой ответ.