2016-06-26 30 views
0

我有三個字符說a,b,c。下面是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

相關問題