我正在尝试在(测试版)Trackmania 2 游戏中制作脚本。 (这是 JavaScript、HTML、C 和...其他我在最糟糕的噩梦中无法想象的东西的丑陋混合)。
脚本引擎似乎不知道“and”或“&&”(如果我尝试myVar && 16
,引发的好错误是“ bool 操作等待 bool 值”)
我想做这样的事情:
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
}
如果编译器不知道位域操作,我知道如何做到这一点吗?
最佳答案
“按位与”通常是 &
,不是&&
。 (&&
通常是“逻辑与”。)“按位与”是 &
C 和 JavaScript,你提到的两种语言。事实上,&&
似乎是“合乎逻辑的”,并且对您收到的错误消息有所了解。解决方案可能只是使用
if (Var & 1)
如果你确实没有按位运算,仍然可以完成。请记住,4 位数字可以表示为:
b3 * 2**3 + b2 * 2**2 + b1 * 2**1 + b0 * 2**0
如果您有幂、除法、整数 chop 和模数,您可以使用以下命令来查看是否找出位 x
设置为:
int( i / (2**x) ) % 2
如果没有求幂,可以用查找表代替。
如果没有模数,i % 2
可以替换为( (i/2) - int(i/2) )*2
关于javascript - 如果一种语言没有 "bit to bit"比较,我该如何模拟它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7290403/