|
|
Le variabili intere possono essere utilizzate come contenitori di bit (fino a 64...). Diventano essenziali dei metodi per la manipolazione dei bit e le maschere di bit. Il bit p-esimo è acceso?L'operatore &, AND bit a bit, spegne tutti i bit accoppiati con 0 e lascia inalterato il bit accoppiato con 1 .........x...... & 0.......010....0 = ------------------ 0.......0x0....0 Codifica public static boolean scopri(long n, int p)
{
long mask = (0x1L << p); // il bit LSD diventa p-esimo
n &= mask;
return (n != 0);
}
Se il bit p-esimo diventa LSD allora la maschera necessaria è 0.............01 Codifica public static long scopri(long n, int p)
{
n >>>= p; // il bit p-esimo di n diventa LSD
n &= 0x1L;
return n;
}
Accendere il bit p-esimoL'operatore |, OR bit a bit, accende il bit accoppiato con 1 e lascia inalterati quelli accoppiati con 0 .........x...... | 0.......010....0 = ------------------ .........1...... Codifica public static long accendi(long n, int p)
{
long mask = (0x1L << p); // il bit LSD diventa p-esimo
n |= mask;
return n;
}
Spegnere il bit p-esimoL'operatore &, AND bit a bit, lascia inalterati i bit accoppiati con 1 e spegne il bit p-esimo accoppiato con 0 .........x...... & 1.......101....1 = ------------------ .........0...... Codifica public static long spegni(long n, int p)
{
long mask = (0x1L << p); // il bit LSD diventa p-esimo
mask = ~mask; // tutti 1 tranne uno 0
n &= mask;
return n;
} |
|