Domanda

Come si esegue un'operazione AND di bit su due interi a 32 bit in C #?

Related:

operazioni # bit per bit più comune C.

È stato utile?

Soluzione

Con l'operatore &

Altri suggerimenti

Utilizzare l'operatore &.

  

binario e operatori sono predefiniti per i tipi integrali [.] Per i tipi integrali, e calcola l'AND bit a bit dei suoi operandi.

MSDN .

var x = 1 & 5;
//x will = 1
const uint 
  BIT_ONE = 1,
  BIT_TWO = 2,
  BIT_THREE = 4;

uint bits = BIT_ONE + BIT_TWO;

if((bits & BIT_TWO) == BIT_TWO){ /* do thing */ }

utilizzo & operatore (non &&)

int a = 42;
int b = 21;
int result = a & b;

Per un po 'più di informazioni ecco il primo risultato di Google:
http://weblogs.asp.net/alessandro/archive/2007/10/02/bitwise-operators-in-c-or-xor-and-amp-amp-not.aspx

var result = (UInt32)1 & (UInt32)0x0000000F;

// result == (UInt32)1;
// result.GetType() : System.UInt32

Se si tenta di gettare il risultato a int, è probabilmente ottenere un errore di overflow a partire dal 0x80000000, Non selezionata permette di evitare errori di overflow che non è così raro che quando si lavora con le maschere di bit.

result = 0xFFFFFFFF;
Int32 result2;
unchecked
{
 result2 = (Int32)result;
}

// result2 == -1;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top