Lenguaje C - operadores bit a bit

a&b, a|b, a^b, el valor de esta expresión se calcula en la memoria,

Así que realizamos cálculos sobre sus complementos .

a&b, a|b, a^b, sus operandos deben ser enteros .


Tabla de contenido

bit a bit Y&

bit a bit O |

Bit a bit XOR^


bit a bit Y&

&--Por y

Si el bit binario correspondiente tiene 0, es 0, y si dos de ellos son 1 al mismo tiempo, es 1.

#include<stdio.h>
int main()
{int a=3;
//00000000000000000000000000000011——原码、反码、补码
int b=-5;
//10000000000000000000000000000101——原码
//11111111111111111111111111111010——反码
//11111111111111111111111111111011——补码
int c=a&b;
//00000000000000000000000000000011——a补码
//11111111111111111111111111111011——b补码
//00000000000000000000000000000011——c补码
printf("%d\n",c);
return 0;
}


bit a bit O |

|——por bit binario o

 Si el bit binario correspondiente tiene 1, entonces es 1, y si dos de ellos son 0 al mismo tiempo, es 0.

#include<stdio.h>
int main()
{int a=3;
//00000000000000000000000000000011——原码、反码、补码
int b=-5;
//10000000000000000000000000000101——原码
//11111111111111111111111111111010——反码
//11111111111111111111111111111011——补码
int c=a|b;
//00000000000000000000000000000011——a补码
//11111111111111111111111111111011——b补码
//11111111111111111111111111111011——c补码
//10000000000000000000000000000101——c原码
printf("%d\n",c);
return 0;
}


Bit a bit XOR^

Los bits binarios correspondientes son 0 si son iguales y 1 si son diferentes.

#include<stdio.h>
int main()
{int a=3;
//00000000000000000000000000000011——原码、反码、补码
int b=-5;
//10000000000000000000000000000101——原码
//11111111111111111111111111111010——反码
//11111111111111111111111111111011——补码
int c=a^b;
//00000000000000000000000000000011——a补码
//11111111111111111111111111111011——b补码
//11111111111111111111111111111000——c补码
//10000000000000000000000000001000——c原码
printf("%d\n",c);
return 0;
}

 El operador XOR tiene las siguientes fórmulas:

1.a^a=0 2.0^a=a 3. XOR admite la ley conmutativa

ejemplo:

intercambia los valores de dos números

#include<stdio.h>
int main()
{int a=3;
int b=-5;
printf("%d %d\n",a,b);
a=a^b;
b=a^b;//a^b^b=a^0=a
a=a^b;//a^b^a=b^0=b
printf("%d %d\n",a,b);
return 0;

¡Pero el operador XOR solo se puede usar para el intercambio de números enteros!

Supongo que te gusta

Origin blog.csdn.net/outdated_socks/article/details/129531202
Recomendado
Clasificación