python符号なし右シフトを実現

681 ワード

他の人のjavaコードを書き換える必要があるため、そのコードにはx>>>yの操作があり、記号なしで右に移動し、pythonは左に右に移動するしかないので、自分で1セット書きます(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)

彼を剽窃する