Ответ 1
Хотя в коде, создаваемом компилятором, нет разницы, бит-маски традиционно записываются с использованием шестнадцатеричной нотации, потому что человеку гораздо проще преобразовать в двоичную форму. Другим общим соглашением является включение начальных нулей, когда известна длина поля. Например. для поля C int
, обычно для записи:
#define MASK 0x0000ffff
Кроме того, шестнадцатеричные константы указывают программисту, что это, вероятно, битовая маска, или значение, которое каким-то образом будет задействовано в побитовых операциях и, вероятно, должно быть обработано специально.
В качестве бонуса шестнадцатеричные нотации могут также избегать проблем с отрицательными номерами: 0xffffffff
на самом деле является отрицательным числом (-1
, если быть точным). Вместо того, чтобы манипулировать знаками и номерами дополнений 2, вы можете просто указать маску в шестнадцатеричном виде и сделать с ней.
Начиная с Java 7 вы также можете использовать бинарные литералы, что еще более упрощает для человека понимание того, какие биты установлены в битовой маске. И бинарные литералы могут использовать underscores, чтобы поместить биты в отдельные группы.
Это означает, что справедливо также следующее:
public final static int DELETION_MASK = 0b0000_0001;