|
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; } |
|