2015-09-25 61 views
-2

比方說,在一些系統中用戶的狀態被分配給一個數字,是2如何找到,如果數2^n爲2^1總和 - 2^M

1 - New Member 
2 - Member 
4 - Friend 
8 - VIP 
16 - Admin 
32 - System Owner 

一個權力因此,如果System Owner得到FriendAdmin的狀態,他的狀態將有一個值52.現在,我想查詢我的狀態表,並查看哪些用戶具有Friend狀態。如何檢查數字4是數字生成總和(52)的一部分?

如果這是一個函數來完成,下面的輸出預計:

isPartOf(4, 52); //returns true 
isPartOf(12, 52); //returns false since 8 (VIP) was not used during calculating 52 

算法,在我腦海中是最大可能數(2^n)的減法比(在例子的情況下)52下。有沒有更有效的方法來做到這一點?

+0

Downvote?請解釋爲什麼 – lolbas

回答

4

按位與。

>>> 52 & 4 == 4 
True 
>>> 52 & 12 == 12 
False 
+0

你能解釋一下嗎? – YoungHobbit

+1

https://en.wikipedia.org/wiki/Bitwise_operation –

+1

或查看您的Computing 101筆記。 –

相關問題