¿Cómo verifico si un número entero es par o impar usando operadores bit a bit?

3 minutos de lectura

¿Como verifico si un numero entero es par o impar
hombre enérgico

¿Cómo verifico si un número entero es par o impar usando operadores bit a bit?

¿Como verifico si un numero entero es par o impar
TJ Crowder

Considere lo que significa ser “par” e “impar” en términos de “bit”. Dado que los datos de enteros binarios se almacenan con bits que indican múltiplos de 2, el bit de menor orden corresponderá a 20que por supuesto es 1, mientras que todos los otro bits corresponderán a múltiplos de 2 (21 = 2, 22 = 4, etc). Arte ASCII gratuito:

NNNNNNNN
||||||||
|||||||+−− bit 0, value =   1 (20)
||||||+−−− bit 1, value =   2 (21)
|||||+−−−− bit 2, value =   4 (22)
||||+−−−−− bit 3, value =   8 (23)
|||+−−−−−− bit 4, value =  16 (24)
||+−−−−−−− bit 5, value =  32 (25)
|+−−−−−−−− bit 6, value =  64 (26)
+−−−−−−−−− bit 7 (highest order bit), value = 128 (27) for unsigned numbers,
                 value = -128 (-27) for signed numbers (2's complement)

Solo he mostrado 8 bits allí, pero entiendes la idea.

Entonces, puede saber si un número entero es par o impar mirando solo el bit de orden más bajo: si está establecido, el número es impar. Si no, es incluso. No le importan los otros bits porque todos denotan múltiplos de 2, por lo que no pueden hacer que el valor sea impar.

los manera miras ese bit es usando el operador AND de tu idioma. En C y muchos otros lenguajes derivados sintácticamente de B (sí, B), ese operador es &. En BASIC, por lo general es And. Toma su número entero, Y lo combina con 1 (que es un número con solo el bit de orden más bajo establecido), y si el resultado no es igual a 0, el bit se estableció.

estoy intencionalmente no en realidad estoy dando el código aquí, no solo porque no sé qué idioma estás usando, sino porque marcaste la pregunta como “tarea”. 🙂

En C (y la mayoría de los lenguajes similares a C)

if (number & 1) {
  // It's odd 
}

1646745432 719 ¿Como verifico si un numero entero es par o impar
TM

if (number & 1)
    number is odd
else // (number & 1) == 0
    number is even

Por ejemplo, tomemos el número entero 25, que es impar. En binario 25 es 00011001. Observe que el bit menos significativo b0 es 1

00011001    
00000001   (00000001 is 1 in binary)
       &
--------
00000001

¿Como verifico si un numero entero es par o impar
neontapir

Solo una nota al pie de la respuesta de Jim.

En C#, a diferencia de C, AND bit a bit devuelve el número resultante, por lo que querrá escribir:

if ((number & 1) == 1) {
   // It's odd
}

if(x & 1)                               // '&' is a bit-wise AND operator
    printf("%d is ODD\n", x);
else
    printf("%d is EVEN\n", x);

Ejemplos:

    For 9:

      9 ->        1 0 0 1
      1 ->     &  0 0 0 1
      -------------------
      result->    0 0 0 1

Así que 9 Y 1 nos da 1, ya que el bit más a la derecha de cada número impar es 1.

     For 14:

       14 ->      1 1 1 0
       1  ->   &  0 0 0 1
       ------------------
       result->   0 0 0 0

Así que 14 Y 1 nos da 0, ya que el bit más a la derecha de cada número par es 0.

1646745434 950 ¿Como verifico si un numero entero es par o impar
TLama

También en Java tendrás que usar if((number&1)==1){//then odd}porque en lenguajes similares a Java y C# el int no está echado a boolean. Tendrás que usar los operadores relacionales para devolver un boolean valor es decir true y false a diferencia de los lenguajes similares a C y C ++ que tratan el valor distinto de cero como true.

Puede hacerlo simplemente usando AND bit a bit & operador.

if(num & 1)
{
    //I am odd number.
}

Lea más aquí – Verificando pares impares usando el operador bit a bit en C

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad