Philippe Strauss wrote:
[EMAIL PROTECTED]">
On Thu, Aug 29, 2002 at 06:34:28PM +0200, Francois Ryser wrote:
Bonjours,

Je recherche une methode en c++ de compter le nombre de bits a 1 dans des
mots de 16 bits, mais avec un imperatif de vitesse car nous devons faire sur
1 million de mots de 16 bits
Je pense que l'utilisation d'opérations sur bits devrait être plus rapide du style (pour l'intérieur de la boucle).

   r += w & 1;  // bit-wise logical AND
   w >>=1;       // bit-shift

Sinon faire un tableau à 65536 (=2^16) entrées et stocker les résultat peut valoir la peine dans ton cas également.

Mais bon il y a encore mieux :-(  http://www.devx.com/free/tips/tipview.asp?content_id=3839
[EMAIL PROTECTED]">


utilise la division modulo avec 2, qui donne le reste de la division :

r = 0;
w = .... ;
for (i = 0; i < 16; ++i) {
r += w % 2 ; // on accumule le reste de la division entiere par deux
w = w / 2; // division entiere */

-- 
Ivo Bloechliger                            Président GNU Generation
EPFL-FSB-IMA-RO-SE                         Association d'étudiants pour
1015 Lausanne                              la promotion des logiciels libres
http://rose.epfl.ch                        http://gnugeneration.epfl.ch



Répondre à