美文网首页
python实现无符号右移

python实现无符号右移

作者: 萌木盖 | 来源:发表于2019-07-11 09:32 被阅读0次

    因为需要重写别人的java代码,它的代码有个x>>>y的操作,无符号右移,因为python只有有左移右移,故自己写一套(ps:其实是我抄的😂)

    import ctypes
    def int_overflow(val):
        maxint = 2147483647
        if not -maxint-1 <= val <= maxint:
            val = (val + (maxint + 1)) % (2 * (maxint + 1)) - maxint - 1
        return val
    
    
    def unsigned_right_shitf(n,i):
        # 数字小于0,则转为32位无符号uint
        if n<0:
            n = ctypes.c_uint32(n).value
        # 正常位移位数是为正数,但是为了兼容js之类的,负数就右移变成左移好了
        if i<0:
            return -int_overflow(n << abs(i))
        #print(n)
        return int_overflow(n >> i)
    # 参数分别是要移的数字和移多少位
    ret = unsigned_right_shitf(-4,1)
    print(ret)
    

    抄袭他的

    相关文章

      网友评论

          本文标题:python实现无符号右移

          本文链接:https://www.haomeiwen.com/subject/yfzlkctx.html