有什么方法可以强制将 bool 的值读取为 -1/1 而不是 0/1?

Any way to force value of bool to read as -1/1 instead of 0/1?

我一直在我的代码中使用 int 来定义水平方向。这样我就可以在我的移动代码中使用它(例如 position.x += speed * direction)。在此之前我一直在使用 bool,但是需要 if 语句来查看速度是否为 pos/neg 值。

但我只是在想,这现在使用一个字节(在我的例子中是 4 个字节,Unity int32)而不是一个位。

例如,我知道您可以将 bool 转换为 int,但是有没有办法存储我的方向值并在上面的公式中使用它,但只是一位?

我正在使用 Unity 和 C#。我意识到这不是很重要,但只是想了解这是否可能。

请注意,现代机器以称为字的字节块形式获取数据,它可能是 4 个字节或 8 个字节,具体取决于体系结构。

您可以通过按位运算符存储一位信息,但只有将多个位打包成一个字或字节时才有用。

因此,如果您想将方向存储为布尔值(1 位信息),则必须使用 if-else 语句。 否则,你不能用一位来表示符号和绝对值!