我试图使用JavaScript评估一个给定的棋盘状态是否在Neutreeko(5x5棋盘,3个连接水平,对角线或垂直是赢)的游戏结束。感谢@Anonymous,我现在知道它需要的位掩码,但我仍然无法使它工作。也就是说,当我尝试类似的东西时:
var x = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0];
if(x & (x >> 1) & (x >> 2) & 0x739ce7) console.log("success");
if(x & (x >> 5) & (x >> 10)) console.log("success");
我从未获得成功。为什么会这样?
答案 0 :(得分:4)
x
是一个数组,不能被JavaScript的按位运算符操纵。将x
更改为
var x = parseInt('1111111111111111111100000', 2);
它应该有效。请注意,JavaScript的按位运算符仅适用于-2 31 和2 31 -1之间的数字。
如果要像原始数组一样转换数组,可以执行以下操作:
var x = parseInt([1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0].join(''), 2);