В Java можно определить целочисленную константу в двоичном формате?


Answers

В Java 7:

int i = 0b10101010;

В старых версиях Java нет бинарных литералов (см. Другие ответы на альтернативы).

Question

Подобно тому, как вы можете определить целочисленную константу в шестнадцатеричном или восьмеричном, могу ли я сделать это в двоичном формате?

Я признаю, что это очень простой (и глупый) вопрос. Мои поисковые запросы google пусты.




Найдите в Google «синтаксис литералов Java», и вы придумали некоторые записи.

Существует восьмеричный синтаксис (префикс вашего номера с 0), десятичный синтаксис и шестнадцатеричный синтаксис с префиксом «0x». Но никакого синтаксиса для двоичной нотации.

Некоторые примеры:

int i = 0xcafe ; // hexadecimal case
int j = 045 ;    // octal case
int l = 42 ;     // decimal case



Ответ от Ed Swangren

public final static long mask12 = 
  Long.parseLong("00000000000000000000100000000000", 2);

работает отлично. Я использовал long вместо int и добавил модификаторы, чтобы уточнить возможное использование в качестве битовой маски. Однако есть два неудобства при таком подходе.

  1. Прямое типирование всех этих нулей является склонным к ошибкам
  2. Результат не доступен в десятичном или шестнадцатеричном формате на момент разработки

Я могу предложить альтернативный подход

public final static long mask12 = 1L << 12;

Это выражение делает очевидным, что 12-й бит равен 1 (отсчет начинается с 0, справа налево); и когда вы наводите курсор мыши, всплывающая подсказка

long YourClassName.mask12 = 4096 [0x1000]

появляется в Eclipse. Вы можете определить более сложные константы, такие как:

public final static long maskForSomething = mask12 | mask3 | mask0;

или явно

public final static long maskForSomething = (1L<<12)|(1L<<3)|(1L<<0);

Значение переменной maskForSomething прежнему будет доступно в Eclipse во время разработки.




Чуть более неудобный ответ:

public class Main {

    public static void main(String[] args) {
        byte b = Byte.parseByte("10", 2);
        Byte bb = new Byte(b);
        System.out.println("bb should be 2, value is \"" + bb.intValue() + "\"" );
    }

}

который выводит [java] bb, должен быть 2, значение равно «2»,






Related