¿Cómo se realiza una operación and bit a bit de dos enteros de 32 bits en C#?

Relacionados:

Más comunes C# operaciones a nivel de bit.

OriginalEl autor Tony The Lion | 2009-12-18

8 Comentarios

  1. 6

    Utilizar el & operador.

    Binario & operadores predefinidos para los tipos enteros[.] Los tipos enteros, & calcula el bit a bit Y de sus operandos.

    De MSDN.

    OriginalEl autor jason

  2. 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 */ }
    Hola, esto puede solucionar el problema… pero sería bueno si usted puede proporcionar un poco de explicación sobre cómo y por qué funciona 🙂 no olvides que hay un montón de novatos en Stack overflow, y que ellos podrían aprender una cosa o dos de su experiencia – lo que es obvio para usted puede no ser así.
    Me gustaría también vale la pena lo que indica que parte de esta respuesta se aborda la cuestión de «¿Cómo se realiza una operación and bit a bit de dos enteros de 32 bits en C#?». Su respuesta parece asumir que el autor de la pregunta es el uso de banderas, pero no hay ninguna razón por la que habría de ser el caso. Usted también debe pensar en si su respuesta añade nada que no haya sido abordado por las otras respuestas. En mi opinión, no.
    Me enteré de desarrollo mediante el análisis de ejemplos de código. Creo que esto da más información que la parte superior nominal respuesta, «el Uso de la & operador.» Se presenta una plantilla de la forma para comparar varios bits. También utiliza constantes en lugar de literales. He publicado esto en su mayoría porque no he tocado C# en un rato y lo necesitaba para un proyecto de mi propia. En lugar de pedir a & la respuesta a mi propia pregunta, he puesto aquí. En serio, «uso y aplicaciones de los operadores; (no &&)» ahora es más nominal que mi respuesta?

    OriginalEl autor bitlather

  3. 0
    var result = (UInt32)1 & (UInt32)0x0000000F;
    
    //result == (UInt32)1;
    //result.GetType() : System.UInt32

    Si se trate de lanzar el resultado int, usted probablemente obtendrá un error de desbordamiento a partir de 0x80000000,
    Desactivada permite evitar errores de desbordamiento de que no es tan raro que cuando se trabaja con las máscaras de bits.

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

    OriginalEl autor George Polevoy

Dejar respuesta

Please enter your comment!
Please enter your name here