Python 实现 Javascript 的无符号右移运算符 (>>>)

506 阅读1分钟

MDN关于>>>的文档

python代码如下

MAX32INT = 4294967295

def right_without_sign(num, bit=0) -> int:
    # example: 
    #   javascript: -1 >>> 1 === python: right_without_sign(-1, 1)
    val = ctypes.c_uint32(num).value >> bit
    return (val + (MAX32INT + 1)) % (2 * (MAX32INT + 1)) - MAX32INT - 1