i ont ces 2 fonctions j'ai obtenu d'un autre code deComment faire pour que la fonction de rotation des bits accepte une taille de bit?
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)
et je voulais les utiliser dans un programme, où sont nécessaires 16 rotations de bits. Cependant, il y a aussi d'autres fonctions qui nécessitent 32 rotations de bits, alors je voulais quitter le 32 dans l'équation, alors je suis:
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)
cependant, les réponses sont sortis mal quand je l'ai testé ce exposé. pourtant, les valeurs sont sortis correctement lorsque le code est
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)
ce qui se passe et comment puis-je résoudre ce problème?
Que fait un "L" dedans? Ne devrait-il pas être simplement "2 ** n" au lieu de "2L ** n"? – KIAaze
Aussi, pourquoi ne pas simplement '1 << n' au lieu de' 2 ** n'? –