Visualizza messaggio singolo
Vecchio 08 marzo 10, 15:40   #10 (permalink)  Top
illez
User
 
L'avatar di illez
 
Data registr.: 06-08-2007
Residenza: Empoli
Messaggi: 1.813
Citazione:
Originalmente inviato da frank Visualizza messaggio
Anzi, meglio ancora e più efficiente:

Codice:
// MAXPAGLIONI e' il numero massimo di paglioni
int mask, i;
if (PORTA) 
        for (mask=1, i=1; i < MAXPAGLIONI+1; mask = mask << 1, i++) 
            if (PORTA & mask) break;
// al termine del ciclo, i contiene il numero del paglione colpito
Ci sono le eccezioni in alcuni casi (vedi 3, 5 etc)
i < MAXPAGLIONI+1; è inefficiente. Fai una somma ad ogni ciclo.
piuttosto:
i <= MAXPAGLIONI;
__________________
.......
illez non è collegato   Rispondi citando