2013-10-24 2 views
-1

Я хочу написать метод, в котором аргументом метода является int, возможные значения: 1 -8. И в методе у меня есть 4 булевых элемента, значение которых я должен установить как соответствующее битовое значение целого числа.Передача целого числа в качестве аргумента и интерпретация целого числа как бита в методе в java

method(int x){ 
    bool1 = value at the first bit, 0 = false, 1 = true; 
    bool2 = value at the second bit, 0 = false, 1 = true; 
    bool3 = value at the third bit, 0 = false, 1 = true; 
    bool4 = value at the last bit, 0 = false, 1 = true; 
} 

Таким образом, если нужно установить bool1 = ложь, bool2 = верно, bool3 = ложь, bool4 = истинные, я бы передать "5" в качестве аргумента метода (который переводит к двоичным 0101).

Я не знаю, как это сделать на Java (синтаксис мудрый и оптимальный код мудрый).

Заранее спасибо. Не домашнее задание

+1

Что вы имеете в виду _first bit_? Самый или наименее значимый? – jlordo

+0

'' '' '' ваш друг. – rgettman

+0

Первый результат Google для «Java-оператора бит»: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html – chrylis

ответ

1

Ваша спецификация переводится:

void method(int x) { 
    boolean bool1 = (x & 8) > 0; 
    boolean bool2 = (x & 4) > 0; 
    boolean bool3 = (x & 2) > 0; 
    boolean bool4 = (x & 1) > 0; 
} 
2

Вы можете использовать маску и побитовый оператор AND, чтобы проверить, установлен ли каждый бит.

//0x8 is 1000 in binary, if the correctbit is set in x then x & 0x8 will 
//equal 0x8, otherwise it will be 0. 
bool1 = (0x8 & x) != 0; 
//Do the same for the other bits, with the correct masks. 
bool2 = (0x4 & x) != 0; 
bool3 = (0x2 & x) != 0; 
bool4 = (0x1 & x) != 0; 
Смежные вопросы