![]() |
| |||
| Sleipnir wrote: > ben le plus simple que je vois c'est : > > un test "le nombre est impair? si oui, +1 sinon alors rien" > décalage de bit vers la droite > etc et tant que le nombre n'est pas egal à 0... C'est la méthode classique par itération: int bitcount (unsigned int n) { int count=0; while (n) { count += n & 0x1u ; n >>= 1 ; } return count ; } > Qui dit mieux ? Des tas d'autres algorithmes décrits sur la page indiquée plus haut dans ce thread: http://infolab.stanford.edu/~manku/b.../bitcount.html La méthode que tu proposes fonctionne bien mais à un temps de calcul proportionnel au nombre de bits du nombre, alors que d'autres ont un temps de calcul proportionnel au nombre de 0 ou de 1, voire (beaucoup) moins pour les méthodes précalculées. On peut faire de 1 à 20 fois plus rapide en fonction des options de compil. -- (jean_marc_n2) |
| | ||||
| ||||
| |
![]() |
| Outils de la discussion | |
| Modes d'affichage | |
| |
| ||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| Re: comptage de bits | Charlie Gordon | Newsgroup fr.comp.lang.c | 1 | 05/08/2008 21h29 |
| Re: comptage de bits | Charlie Gordon | Newsgroup fr.comp.algorithmes | 1 | 05/08/2008 21h29 |
| Re: comptage de bits | Jean-marc | Newsgroup fr.comp.algorithmes | 0 | 23/07/2008 18h16 |
| Resolu: reduire le poids des vignettes [was Re : imagemagick: 24 bits -> 8 bits ?] | hugolino | Newsgroup fr.comp.os.linux.configuration | 0 | 04/11/2007 07h45 |
| passer de la mdv spring 32 bits à la 64 bits? | jean-jacques | Newsgroup alt.fr.os.mandrake | 2 | 20/07/2007 07h17 |