2016-06-26 3 views
0

У меня есть три символа: a, b, c. Вот бинарное представление, Ь, сКак преобразовать двоичный вход в ожидаемый результат?

a 001 
b 010 
c 100 

что я хочу, когда кто-то обеспечить ввод как 011, выход должен быть a,b

Здесь Ожидаемым результатом

input output 
001  a 
010  b 
011  b,a 
100  c 
101  c,a 
110  c,b 
111  c,b,a 

Что такое эффективный способ добиться этого? Я смутно вспоминаю, что был какой-то бинарный оператор, чтобы достичь того же, но я не мог вспомнить об этом.

+0

Что вы пробовали? Где вы застряли? И почему странный порядок - почему это «a, b», но «c, b, a» ?? –

ответ

0

Вы можете использовать оператор & (побитовый и) и проверить, не является ли результат не 0, чтобы узнать, состоит ли целое из определенного двоичного числа.

(011 & 001) != 0

(010 & 001) == 0

(010 & 010) != 0

final int a = 0b001, b = 0b010, c = 0b100; 
int val = 0b011; 
boolean containsA = (val & a) != 0; // true 
boolean containsC = (val & c) != 0; // false 
+0

Вы не имеете в виду &? Это можно сделать с | но это будет работать по-другому – harold

+0

@harold Да, спасибо, что заметили! – SamTebbs33

Смежные вопросы