Envoyé par
Trap D
Je crois avoir compris ton propos, mais il n'en reste pas moins qu'au niveau du résultat, en C, sur un entier, à part les cas de débordements, (ouf) le décalage d'un bit sur la gauche entraîne une multiplication par 2, oui ou non ?
Oui, c'est une conséquence, mais ce n'est pas forcément le but recherché. La vision purement mathématique (disons plutôt arithmétique) d'un problème risque de masquer d'autres aspects plus simples.
Ici, par exemple, le but n'était ni de faire une multiplication par 2, ni d'ajouter 1, mais de placer une valeur dans les bits 15 (ou 31 etc. selon l'implémentation) à 1, et un flag (droite/gauche) dans le bit 0.
Si je dois fabriquer un masque qui doit tester le bit 5, je vais tout simplement écrire
parce que c'est simple clair et évident quand on connait les opérateurs binaires (de plus, c'est une expression constante...).
Un matheux sera capable d'aller chercher une fonction d'exponentionation par 2 genre
EDITED
unsigned bit5 = pow(2,5);
ce qui est bien sûr une anerie de réalisation, bien mathématiquement juste... (enfin, je crois, les maths, c'est pas mon fort).
Partager