У меня есть эти 2 функции, которые я получил из некоторого другого кода
def ROR(x, n):
mask = (2L**n) - 1
mask_bits = x & mask
return (x >> n) | (mask_bits << (32 - n))
def ROL(x, n):
return ROR(x, 32 - n)
, и я хотел использовать их в программе, где требуется 16-битное вращение.тем не менее, есть и другие функции, которые требуют 32-битных вращений, поэтому я хотел оставить 32 в уравнении, поэтому я получил:
def ROR(x, n, bits = 32):
mask = (2L**n) - 1
mask_bits = x & mask
return (x >> n) | (mask_bits << (bits - n))
def ROL(x, n, bits = 32):
return ROR(x, bits - n)
однако ответы не оправдались, когда я протестировал это,Тем не менее, значения вышли правильно, когда код
def ROR(x, n):
mask = (2L**n) - 1
mask_bits = x & mask
return (x >> n) | (mask_bits << (16 - n))
def ROL(x, n,bits):
return ROR(x, 16 - n)
что происходит и как я могу это исправить?