58 votes

obtenir la valeur absolue sans utiliser la fonction abs ni l’instruction if

Je réfléchissais à la façon d’obtenir la valeur absolue d’un entier sans utiliser l’instruction ni . Au début, j’utilisais des bits de décalage à gauche ( `` ), en essayant d’obtenir un signe négatif hors de la plage, puis de décaler des bits à l’endroit où il se trouve, mais malheureusement, cela ne fonctionne pas pour moi. S’il vous plaît laissez-moi savoir pourquoi cela ne fonctionne pas et d’autres moyens alternatifs de le faire.

49voto

Hasturkun Points 18653

22voto

phresnel Points 20082

Sans branche :

Note 4.7 Conversions intégrales / 4 :``

11voto

J’essaie ce code en C, et ça marche.

J’espère que cette réponse vous sera utile.

7voto

flanglet Points 51

En supposant des entiers signés 32 bits (Java), vous pouvez écrire :

Pas de multiplication, pas de branche.

BTW, `` fonctionnerait aussi bien mais il est breveté. Oui!

Remarque : Ce code peut prendre plus de 10 fois plus de temps que l’instruction conditionnelle (Verison 8 bits). Cela peut être utile pour la programmation matérielle du système C, etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X