2. Se è una costante te la calcoli da te, basta convertire il numero binario che rappresenta la tua maschera in esadecimale o in decimale e usarlo assieme all'operatore &.
3. Ci sono più modi. Uno molto semplice è:
codice:unsigned int maschera = ~((~0u)<<numero_bit);
- ~0u ottiene un intero senza segno che ha tutti i bit a 1 (parte come tutto zero, quindi ci viene applicato l'operatore not bitwise che lo fa diventare tutto uni);
- al numero così ottenuto viene applicato uno shift verso sinistra di numero_bit; quando si effettua uno shift a sinistra da destra entrano degli zeri, così ora il numero avrà numero_bit zeri a destra, alla cui sinistra ci saranno tutti gli uni;
- al numero in questione viene nuovamente applicato il not binario, che converte gli uni in zeri e viceversa; si ottiene così la maschera desiderata.
Esempio (con numero_bit=4):
codice:0u 0000000000000000 ~0u 1111111111111111 ~0u<<4 1111111111110000 ~((~0u)<<4) 0000000000001111