2016-05-16 2 views
4

Я java noob, поэтому, пожалуйста, несите меня, если я не очень хорошо объясню свою проблему.извлеките последние 2 бита в двоичном формате

Таким образом, число 254 равно 11111110 в двоичном формате. Моя проблема в том, что я хочу захватить последние 2 бита (10). Мне сказали использовать оператор%, чтобы сделать это, но я не знаю, как это сделать. Может ли кто-нибудь помочь мне с этой проблемой?

+2

Как вы хотите «захватить» их? Вы хотите получить «String» «10» или число «2»? –

+0

Мне нужно написать метод, чтобы следующее было правильно: result = getLeastSignificant2 (255); System.out.println («Результат getLeastSignificant2 (255) -« + результат »; if (result == 3) { System.out.println («Это правильно!»); } else { System.out.println («Это НЕПРАВИЛЬНО! Должно быть 3»); } – dye

ответ

4

Предположим, вы хотите получить числовое значение последних двух двоичных цифр, мы можем использовать маску.

public static void main(String[] args) { 
    int n = 0b1110; 
    int mask = 0b11; 
    System.out.println(n & mask); 
} 

Что код делает, принимая число, в данном случае 0b1110 и делать в and с маской определяется 0b11.

0b как вы говорите java, что вы выражаете число как двоичное.

В случае, если вы хотите, чтобы получить двоичное число в двоичном виде, вы можете использовать это: Integer.toBinaryString(n & mask)

0

Последние два бита могут быть получены путем делать x % 4, или делать x & 3.

x % 4 является остаток от деления на 4, который представляет собой число 0 - 3, как представлено в последние два бита.

x & 3 - побитовая операция И с двоичным номером 11, т. Е. Обнуление всех остальных битов.

Второй, как правило, самый быстрый во время выполнения и предпочтительный способ выполнения манипуляций с битами. (Используйте побитовый оператор для манипуляции с битами, верно?)

+0

x & 3 работает только на 255, но что, если бы я хотел получить последние 2 бита 64? – dye

+0

@dye '64 & 3 == 0'. '64' (десятичный) -' 01000000' (двоичный), а последние 2 бита - '00'. Какая часть вас путала? – Andreas

+0

Извините, что вы правы! Спасибо! – dye

3

Вы можете использовать% для преобразования в двоичный, но я полагаю, что ее легче использовать Integer.toBinaryString(), а затем Шар(), чтобы получить последние 2 как они это делают How do you get the last character of a string?