Date By Fred
Un jeu de dés opérateurs

On dispose des opérateurs suivants :

  • * qui multiplie des nombres entiers NON signés
  • / qui divise des nombres entiers NON signés (on perd le reste)
  • << et >> décalage de bits à gauche / droite
  • + addition d'entiers
  • - soustraction d'entiers
  • & et logique
  • | ou logique
  • MSB() : retourne le bit de poids fort (0 ou 1) (dérivé des opérateurs précédents)
  • nbBits() : retourne le nombre de bits de la zone mémoire contenant l'entier

Question : quelle formule permet d'effectuer une multiplication d'entiers (signés et non signés) de même taille avec ces seuls opérateurs ? Par exemple, multiplier deux nombres sur 8 bits (résultat sur 16 bits), ou 2 nombres de 32 bits (résultat sur 64), ...

Notre réponse :

a = x*y -MSB(x)*(y << nbBits(y)) -MSB(y)*(x << nbBits(x))

Sur le même principe, lecteur, sauras tu écrire une formule dans le même esprit pour effectuer une division à partir du même set d'opérateurs ? d = ... (division entière de x par y) ... r = ...(le reste de la division entière de x par y)...

Les commentaires sont ouverts !


Comments

comments powered by Disqus