如何为无符号整数实现 % 运算符?

如何为 Lua 的无符号整数实现 % 运算符或函数? 我想过使用浮点型强制转换,但精度是个问题。

function ModU(a, b)
    if b == 0 then return a end
    if a == 0 then return 0 end

    if b < 0 then
        if a < 0 then
          if a < b then return b-a
          else return a
          end
       else
          return a
       end
    else
        if a > 0 then return math.tointeger(a % b)
        else
            i = ModU(x & 0x7fffffff + 1, b)
            j = ModU(2^31 - 1, b)
            return ModU(i + j, b)
        end
    end
end
点赞
用户6834680
用户6834680
# 无符号取模函数

该函数接受两个参数 x 和 y ,并返回 x mod y 的结果(其中 x 和 y 都是无符号整数)。

```lua
function unsigned_mod(x, y)
   return y<=x and x<0 and x-y or y<0 and x or ((x>>1)%y*2+(x&1)-y)%y
end
2018-10-31 14:58:33