Operare con i bit

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