(ALGORITMO) Metodi per il trattamento dei singoli bit.
Il bit p-esimo è acceso?
public static boolean scopri(long n, int p) { long mask = (0x1L << p); // il bit LSD diventa p-esimo n &= mask; return (n != 0); }
oppure
public static boolean scopri(long n, int p) { n >>= p; // il bit p-esimo di n diventa LSD n &= 0x1L; return (n != 0); }
Accendere il bit p-esimo
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-esimo
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; }
Complementare il bit p-esimo
public static long accendi(long n, int p) { long mask = (0x1L << p); // il bit LSD diventa p-esimo n ^= mask; return n; }