Lua 5.2新的二进制库问题

好的,所以我今天决定尝试 Lua 5.2。 我对新的二进制库 bit 非常感兴趣。其中一些函数运行得比我自己写的快得多,这主要是因为它们已经在 Lua 的 C 端实现了。拿二进制的异或函数来说,它的运行速度比我用 Lua 实现的异或还要快 34 倍。

所以,我的困境是: 我认为 binary 函数中已经存在一个 bug

print(bit.bnot(0)) --> 4294967295

这是正确的,因为 4294967295 在二进制中表示为 11111111 11111111 11111111 11111111。

然而,

print(bit.band(4294967295, 65535)) --> 0

这是错误的,或者至少我认为应该是错误的。在二进制中,65535 表示为 11111111 11111111。当我在上述情况下使用 bit.band 时,不应该返回 65535 吗?

我正在使用来自 这里 的 Lua 5.2.0-work2 预编译二进制文件。

原文链接 https://stackoverflow.com/questions/4911813

点赞
stackoverflow用户96620
stackoverflow用户96620

我完全没有关注 Lua 5.2 发布的任何内容,但是如果你主要关心二进制操作的话,Lua 5.1 有一个 BitOp 模块,与 LuaJit 提供的本地实现兼容。

2011-02-07 21:27:59