Объявление масок для побитовых операций - PullRequest
5 голосов
/ 14 ноября 2011

Я новичок в таких операциях низкого уровня, я надеюсь, что кто-то может указать на очевидную ошибку, которую я должен здесь сделать.маска определена, но я не вижу, как это исправить.

Ответы [ 4 ]

7 голосов
/ 14 ноября 2011

Прежде всего 0x00001111 в шестнадцатеричном формате, что больше, чем переполнения 255 - 16^3 + 16^2 + 16 + 1 = 4369 и byte. Посмотрите здесь как представлять двоичные числа или просто используйте shifted & 15.

5 голосов
/ 14 ноября 2011

Ваша маска должна быть двоичная 00001111, что равно гексам 0x0F.

byte mask = (byte)0x0F;
4 голосов
/ 14 ноября 2011

С помощью Java 7 вы можете создавать двоичные литералы

byte binaryLit = (byte)0b00001111;

0xsomenumbers - это шестнадцатеричный литерал, а до java7 нет поддержки двоичных файлов.

0 голосов
/ 14 ноября 2011

Вы говорите, что хотите замаскировать первые три бита, но, как говорит Петар, 0x001111 не являются битами. Если вы хотите замаскировать три бита, вам нужно замаскировать 7

...