我有三個字符說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
是什麼實現這一目標的有效方法?我依稀記得有一些二元運算符可以實現,但我不記得這一點。
我有三個字符說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,以查看整數是否由某個二進制數組成。
(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
你是不是指&?它可以用|來完成但那會工作不同 – harold
@harold是的,謝謝你的注意! – SamTebbs33
你嘗試過什麼?你卡在哪裏?爲什麼奇怪的排序 - 爲什麼是「a,b」但是「c,b,a」? –