我正在尝试在(测试版) Trackmania 2游戏中写一个脚本。(它是JavaScript、HTML、C和...在我最糟糕的噩梦中我无法想象的其他事情)。
脚本引擎似乎不知道"and“或"&&”(如果我尝试myVar && 16
,出现的错误是"boolean operation awaits a boolean")
我想做一些类似的事情:
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
}
如果编译器不知道位域操作,你知道我该怎么做吗?
发布于 2011-09-03 08:51:04
"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) - int(i/2) )*2
代替i % 2
https://stackoverflow.com/questions/7290403
复制相似问题