Messages de Coun1978

Je crois que t'étais pas loin

Les opérations que t'as écrites peuvent se faire plus simplement en convertissant ton string en int et en utilisant les opérateurs binaires de Python, je pense que c'est ce que ton prof essayait d'indiquer dans le NB3

Comme ça tu peux directement faire un XOR pour l'opération add, décalage d'un bit à gauche pour la multiplication par X, et d'un bit à droite pour la division par X

Ensuite faut pas oublier que le modulo renvoie l'entrée inchangée si son degré est inférieur à celui du diviseur (ici 8)

Et enfin, faut penser à tronquer le résultat du modulo, pour que ça reste bien dans F{2^8}

J'ai essayé ça, ça a l'air de marcher

def modulo(a):
if a & (2**8):
a ^= int("100011011", 2)
return a

def truncate(a, nbits):
return a & (2**nbits - 1)

def mult(a, b):
res = 0
a = int(a, 2)
b = int(b, 2)
while b != 0:
if bin(b)[-1] == "1":
res = res ^ a
b = b ^ 1
a = truncate(modulo(a << 1), 8)
b = b >> 1
return bin(res)[2:]