說工作我有這樣的:位運算符停止後2^31
// different things you can do
var CAN_EAT = 1,
CAN_SLEEP = 2,
CAN_PLAY = 4,
CAN_DANCE = 8,
CAN_SWIM = 16,
CAN_RUN = 32,
CAN_JUMP = 64,
CAN_FLY = 128,
CAN_KILL = 256,
CAN_BE_JESUS = Math.pow(2, 70);
// the permissions that I have
var MY_PERMS = CAN_EAT | CAN_SLEEP | CAN_PLAY | CAN_BE_JESUS;
// can I eat?
if(MY_PERMS & CAN_EAT) alert('You can eat!'); /* RUNS */
// can I sleep?
if(MY_PERMS & CAN_SLEEP) alert('You can sleep!'); /* RUNS */
// can I play?
if(MY_PERMS & CAN_PLAY) alert('You can play!'); /* RUNS */
// can I be jesus?
if(MY_PERMS & CAN_BE_JESUS) alert('You can be jesus!'); /* WONT RUN */
然後,如果我運行它,它會打印出,我可以吃飯,睡覺和玩耍。它不會打印出我可以是耶穌,因爲那個數字是2^70。如果我將數字設置爲2^31,那麼它將起作用(我在64位計算機上,但在運行上述示例時必須在32位模式下運行Chrome)。
在處理按位運算符時,我總是在PHP中遇到這個問題。通常我可以使用我所處的場景,使我的列表中最多有31或63件事情沒有什麼大不了的,但有時我需要的不僅僅是這些。有沒有辦法解決這個限制?按位運算符非常快速,方便。
語言?你說,「PHP ......」。 – 2012-04-08 01:34:26
我的歉意,上面的例子是JavaScript。 – Macmee 2012-04-08 01:35:15