2011-09-03 56 views
0

我试图在(测试版)Trackmania 2游戏中制作脚本。 (这是一种丑陋的JavaScript,HTML,C和其他的东西混合,我无法想象在我最可怕的噩梦)。如果一种语言没有“比特”比较,我该如何模拟它?

脚本引擎似乎不知道“和”或“& &”(如果我尝试myVar && 16提出了很好的错误是“布尔操作等待一个布尔”)

我想要做的如:

if (Var && 1) { 
    // Bit North => trace north 
} 

if (Var && 2) { 
    // Bit East => trace east 
} 
if (Var && 4) { 
    // Bit South => trace south 
} 
if (Var && 8) { 
    // Bit West => trace West 
} 

任何想法如果我可以做到这一点,如果编译器不知道位域操作?

回答

4

“按位和”通常是&,而不是&&。 (&&通常是“逻辑和”。)“Bitwise and”是C和JavaScript中的&,您提到了两种语言。实际上,&&似乎对您得到的错误消息“合乎逻辑”而已。解决方案可能只是使用

if (Var & 1) 

如果您确实没有按位操作,它仍然可以完成。请记住,一个4位数字可以表示为:

b3 * 2**3 + b2 * 2**2 + b1 * 2**1 + b0 * 2**0 

如果你有幂,除法,整数截断和模量,你可以使用下面来看看,以找出是否位x设置:

int(i/(2**x)) % 2 

如果您没有指数,可以用查找表替换。

如果你没有模量,i % 2可以((i/2) - int(i/2))*2

+0

更换非常感谢该诀窍。很高兴在世界各地找到聪明和聪明的人! –