CalcOpenly
Español

Calculadora de operaciones bit a bit: AND, OR, XOR, NOT y desplazamientos

Calcula AND, OR, XOR, NOT, NAND, NOR, desplazamientos y rotaciones sobre enteros de 8 a 64 bits, con resultados decimales, hexadecimales y binarios y una cuadrícula de bits.

Redactado con herramientas de redacción con IAActualizado Ejemplos verificados: 8

Decimal, o con prefijo 0x, 0b o 0o. Los negativos se almacenan en complemento a dos.
Probar
Resultado
Resultado: 72
Número entero; Al más cercano; empates alejándose de cero
Hexadecimal
0x48
Binario
0100 1000
Octal
0o110
Bits con valor 1
2

A AND B da 0x48 (0100 1000), que equivale a 72 tanto con signo como sin signo; 2 de los 8 bits valen 1.

AND de 8 bits

A
1
1
0
0
1
0
1
0
B
0
1
0
1
1
1
0
0
Resultado (AND)
0
1
0
0
1
0
0
0
Cómo se calcula S
  1. Escribir las entradas como patrones de 8 bits

    A=1100 1010,B=0101 1100A = \texttt{1100\,1010},\quad B = \texttt{0101\,1100}

    Los negativos se almacenan como 2⁸ = 256 menos su magnitud (complemento a dos).

  2. Aplicar AND bit a bit

    1100 1010∧ 0101 11000100 1000\begin{array}{rr}& \texttt{1100\,1010} \\ \land\ & \texttt{0101\,1100} \\ \hline & \texttt{0100\,1000}\end{array}

    El bit resultante es 1 solo cuando ambos bits valen 1.

  3. Interpretar sin signo

    ∑bi 2i=72\sum b_i\,2^i = 72

Acerca de Calculadora de operaciones bit a bit: AND, OR, XOR, NOT y desplazamientos

Los operadores bit a bit actúan por separado sobre cada posición: AND da 1 solo si ambos bits son 1; OR, si alguno lo es; XOR, si son diferentes; y NOT invierte cada bit. Los desplazamientos mueven el patrón completo a izquierda o derecha y rellenan con ceros, o con copias del bit de signo en el desplazamiento aritmético a la derecha. Las rotaciones reintroducen por el extremo opuesto los bits que salen. Cada resultado se limita a la anchura elegida: 8, 16, 32 o 64 bits.

Se usa en programación para crear y comprobar máscaras de bits, indicadores, permisos y registros de hardware. El ejemplo inicial, 0xCA AND 0x5C en 8 bits, conserva los bits comunes: 1100 1010 AND 0101 1100 = 0100 1000, que es 0x48 o 72. El XOR de los mismos valores da 0x96, interpretado como 150 sin signo o −106 con signo.

Las entradas negativas se almacenan en complemento a dos: −1 en 16 bits es 0xFFFF.

En la fórmula, U es el valor sin signo, S el valor con signo, b_i el bit i y w la anchura.

Elegir la anchura antes de operar con bits

La calculadora aplica AND, OR, XOR, complementos, desplazamientos y rotaciones a patrones enteros de anchura fija. Selecciona 8, 16, 32 o 64 bits, introduce los operandos y elige una interpretación con signo o sin signo. Las salidas hexadecimal, binaria, octal y decimal describen los mismos bits resultantes.

Las entradas iniciales son A = 0xCA y B = 0b0101_1100, con ocho bits. Sus formas binarias son 1100 1010 y 0101 1100. AND conserva uno solo donde ambos operandos tienen uno. El resultado es 0100 1000: 72 decimal, 0x48, con dos bits activados.

La anchura forma parte del cálculo. Complementar ocho bits cambia ocho posiciones; complementar 64 cambia 64 posiciones. Por ello puede cambiar el resultado numérico aunque se mantenga el texto del operando. Conserva la anchura junto al operador cuando copies una comprobación a otra herramienta.

Introducir enteros y conservar su representación

Puedes usar enteros decimales y prefijos 0x, 0b y 0o para hexadecimal, binario y octal. Los guiones bajos separan grupos, como en el operando binario inicial. Las fracciones se rechazan porque estas operaciones actúan sobre patrones de bits enteros.

Con anchura w, se admiten valores desde −2^(w−1) hasta 2^w − 1. El extremo inferior permite enteros negativos con signo y el superior incluye todos los patrones sin signo. En ocho bits, el intervalo es −128 a 255. La entrada 256 produce un error; no se elimina silenciosamente su noveno bit.

Una entrada negativa se convierte antes de operar a su patrón de complemento a dos en la anchura seleccionada. Por ejemplo, −3 en ocho bits = 256 − 3 = 253, o 1111 1101. El patrón se utiliza después para aplicar la operación elegida y obtener su lectura numérica final.

El segundo operando interviene en las operaciones booleanas de dos entradas. NOT, desplazamientos y rotaciones utilizan A. El contador se utiliza para desplazar o rotar y admite enteros de cero a 128. Revisa qué operación está seleccionada antes de decidir qué campos deberían afectar a la respuesta.

Para enteros superiores al intervalo seguro de los números ordinarios de JavaScript, conserva el valor como texto entero exacto. El ejemplo de 64 bits utiliza 9007199254740993, uno más que 2^53. Su bit inferior es significativo y no debe perderse antes de aplicar XOR.

Entender las operaciones booleanas

AND produce uno si los dos bits correspondientes son uno. OR produce uno si al menos uno lo es. XOR produce uno si los bits son distintos. NAND, NOR y XNOR complementan esos resultados dentro de la anchura seleccionada. NOT complementa únicamente A, cambiando cada posición de ese patrón.

Con los operandos iniciales, XOR produce 1001 0110, hexadecimal 0x96. Su lectura sin signo es 150. Con signo en ocho bits, se lee 150 − 256 = −106. Los bits obtenidos son los mismos en ambas lecturas; la selección de signo determina su interpretación numérica.

La población de bits es el número de unos del patrón. 0x96 contiene cuatro unos tanto si se muestra 150 como si se muestra −106. El diagrama permite comparar las posiciones de A, B cuando corresponde y el resultado. Esa cuenta tampoco depende de que el número decimal final tenga signo negativo.

Los operadores booleanos de bits se aplican posición por posición. Los operadores lógicos de un lenguaje suelen evaluar si valores completos son verdaderos o falsos. Para interpretar una expresión de programa, conserva esa diferencia y las reglas del tipo entero utilizado; esta calculadora devuelve un patrón de bits definido por sus controles.

Desplazamientos lógicos y aritméticos

Un desplazamiento lógico a la derecha introduce ceros por la izquierda. Con el patrón de ocho bits de −3 y un desplazamiento, se obtiene 0111 1110 = 126. La operación interpreta las posiciones como un patrón sin signo al rellenar la parte que queda vacía.

Un desplazamiento aritmético a la derecha repite el bit de signo. Para la misma entrada se obtiene 1111 1110, leído como −2 con signo o 254 sin signo. En este ejemplo equivale a dividir −3 entre dos y redondear hacia abajo. No utiliza truncamiento hacia cero.

Desplazar A inicial dos posiciones a la izquierda introduce ceros a la derecha y descarta los bits que salen de la anchura: 0010 1000 = 40. El producto ordinario 202 × 4 es 808, pero el patrón resultante conserva solo sus ocho bits inferiores. Las reglas de promociones y contadores de los lenguajes deben comprobarse en su propia especificación, como el borrador de C, sección 6.5.7.

Rotaciones y ejemplos representativos

Una rotación devuelve al otro extremo los bits que salen. Rotar A inicial dos posiciones a la izquierda produce 0010 1011 = 43, mientras que el desplazamiento produce 40. Los contadores de rotación se reducen por la anchura: en ocho bits, diez posiciones equivalen a dos y ocho posiciones recuperan el patrón inicial.

EscenarioResultado decimalResultado hexadecimalBits activados
Predeterminado720x482
XOR con signo-1060x964
Desplazamiento aritmético negativo-20xFE7
Desplazamiento lógico negativo1260x7E6
Precisión de 64 bits90071992547409920x00200000000000001

Las filas negativas utilizan A = −3 y contador uno. La última aplica XOR entre 9007199254740993 y uno en 64 bits, eliminando su bit inferior. El conversor de bases cambia representaciones; el codificador de texto muestra bytes de caracteres. Esas tareas conservan significados distintos de los operandos enteros de esta calculadora.

Ejemplos resueltos

0xCA AND 0x5C (8 bits)

Operación
A AND B
A
0xCA
B
0x5C
Anchura
8 bits
Interpretar el resultado como
Sin signo
Resultado
72
Hexadecimal
0x48
Binario
0100 1000
Bits con valor 1
2

Fuente de comprobación: Cálculo independiente

XOR interpretado con signo

Operación
A XOR B
A
0xCA
B
0x5C
Anchura
8 bits
Interpretar el resultado como
Con signo
Resultado
-106
Hexadecimal
0x96
Los mismos bits, otra interpretación
150 sin signo

Fuente de comprobación: Cálculo independiente

NOT 0 en 64 bits (caso límite)

Operación
NOT A
A
0
Anchura
64 bits
Interpretar el resultado como
Sin signo
Resultado
18446744073709551615
Hexadecimal
0xFFFFFFFFFFFFFFFF
Los mismos bits, otra interpretación
-1 con signo
Bits con valor 1
64

Fuente de comprobación: Cálculo independiente

El desplazamiento aritmético a la derecha conserva el signo

Operación
Desplazar A a la derecha (aritmético, copia el bit de signo)
A
-128
Desplazamiento (bits)
2
Anchura
8 bits
Interpretar el resultado como
Con signo
Resultado
-32
Hexadecimal
0xE0

Fuente de comprobación: -32 & 0xFF = 0xE0

Preguntas

¿Qué hace XOR?

XOR (o exclusivo) da 1 cuando los dos bits son distintos y 0 cuando coinciden: 0xCA XOR 0x5C = 0x96. Tiene dos propiedades útiles: x XOR x = 0, y aplicar dos veces la misma clave recupera el original. Por eso XOR alterna indicadores, calcula paridad y sumas de comprobación, y aparece en cifrados simples. C, Java, JavaScript y Python lo escriben como ^.

¿Qué diferencia hay entre el desplazamiento lógico y el aritmético a la derecha?

El desplazamiento lógico a la derecha rellena los bits superiores libres con 0; el aritmético copia el bit de signo para conservar los negativos. En 8 bits, desplazar 0x80 lógicamente 2 posiciones a la derecha da 0x20 (32), mientras que desplazar −128 aritméticamente 2 posiciones da 0xE0 (−32), igual a −128 ÷ 4. Java y JavaScript usan >>> para el lógico y >> para el aritmético; en C, >> sobre un valor negativo con signo depende de la implementación.

¿Cómo funciona una máscara de bits?

Una máscara es un número cuyos bits 1 seleccionan las posiciones que interesan. AND conserva esos bits y borra el resto; OR los activa; XOR los alterna; y AND con NOT de la máscara los borra. x AND 0x0F conserva los 4 bits inferiores, y −1 AND 0x0F0F en 16 bits da 0x0F0F = 3855, porque −1 tiene todos los bits a 1. Para comprobar el bit n, verifica si x AND (1 << n) es distinto de cero.

¿Qué hace un desplazamiento a la izquierda?

Desplazar n posiciones a la izquierda multiplica un valor sin signo por 2^n siempre que ningún bit 1 salga por el extremo superior: 0x0F << 4 es 0xF0 = 240. Los bits que superan la anchura se pierden, así que en 8 bits 0xFF << 4 también es 0xF0, en lugar de 4080. En C, desplazar tantas posiciones como la anchura del operando izquierdo promovido o más tiene comportamiento indefinido. x86 limita el contador a 5 bits para operandos de 32 bits y a 6 bits para los de 64.

¿Qué es popcount?

Popcount (recuento de población o peso de Hamming) es el número de bits 1 de un valor: 0x48 = 0100 1000 tiene 2, y NOT 0 en 64 bits tiene 64. x86 dispone de una instrucción POPCNT; C++20 lo ofrece como std::popcount y Java como Integer.bitCount. Sirve para contar indicadores activos y calcular la distancia de Hamming entre dos valores mediante popcount(a XOR b).

Acerca de esta calculadora

U=∑i=0w−1bi 2iS=−bw−1 2w−1+∑i=0w−2bi 2i\begin{aligned} U &= \sum_{i=0}^{w-1} b_i\,2^i \\ S &= -b_{w-1}\,2^{w-1} + \sum_{i=0}^{w-2} b_i\,2^i\end{aligned}

Fuentes

  1. ISO/IEC 9899:2024 (C23) §6.5.7 bitwise shift operators and §6.5.10–6.5.12 bitwise AND, XOR, OR (draft N3096)
  2. Intel 64 and IA-32 Architectures Software Developer's Manual, Vol. 2 — SAL/SAR/SHL/SHR and ROL/ROR

Verificado con las referencias

Esta calculadora incluye 8 ejemplos resueltos con respuestas de fuentes independientes. Forman parte del conjunto de pruebas y también puedes ejecutarlos aquí.

Pon esta calculadora en tu sitio

Pega esto donde quieras que aparezca la calculadora. Su uso es gratuito, se mantiene al día con las correcciones que hacemos aquí y el crédito que aparece debajo enlaza con la versión completa, para que tus lectores puedan consultarla.

Altura
Vista previa de la inserción

Conserva el crédito. Es la única condición y es lo que mantiene gratuitas estas calculadoras.