Ça serait pareil si les types étaient unsigned. Mais ici le nombre étant potentiellement négatif l'optimiseur ne génère pas du tout le même code.
; int c = entier % 256;
and eax,800000FFh
jns fct+1Bh (0A3196Bh)
dec eax
or eax,0FFFFFF00h
inc eax
; int d = entier & 255;
and eax,0FFh
; unsigned e = nonSigne % 255u;
and eax,0FFh
; unsigned f = nonSigne & 255;
and eax,0FFh
Dans le cas d'un nombre signé, le modulo nécessite 5 instructions assembleur au lieu d'une seule car par exemple -1 % 256 => -1 alors que -1 & 255 => 255
En recherche d'emploi.
Différence % 255 et & 255 ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
En recherche d'emploi.