Operaciones de bits (Y, O, XOR)

Operaciones de bits

Las operaciones de bits son operaciones unarias y binarias en matrices o números binarios en programación. En muchos microprocesadores más antiguos, las operaciones bit a bit son ligeramente más rápidas que la suma y la resta y, en general, las operaciones bit a bit son mucho más rápidas que la multiplicación y la división. En las arquitecturas modernas, las operaciones bit a bit a menudo operan a la misma velocidad que la suma (aún más rápida que la multiplicación). Los datos en la computadora se almacenan en forma binaria en la memoria. La aritmética de bits consiste en operar directamente sobre los bits binarios del número entero en la memoria, por lo que su eficiencia de ejecución es muy alta.

y(&)

El resultado es 1 sólo si ambos bits involucrados en la operación son 1, en caso contrario es 0

  • 1 y 1 = 1
  • 1&0=0
  • 0&0=0

Ejemplo 1:

 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001  (9 在内存中的存储)
& 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101  (5 在内存中的存储)
-----------------------------------------------------------------------------------
 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0001  (1 在内存中的存储)

Ejemplo 2:
Determinar si el valor a es un número impar o par.

//思路:只要根据数的最后一位是0还是1来决定即可,为0就是偶数,为1就是奇数
if((a&1)==0){
    Debug.Log("偶数");
}else{
    Debug.Log("奇数");
}

o (|)

Si uno de los dos bits involucrados en la operación es 1, el resultado es 1, en caso contrario es 0

  • 1|1=1
  • 1|0=1
  • 0|0=0

ejemplo:

   0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001  (9 在内存中的存储)
 | 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101  (5 在内存中的存储)
-----------------------------------------------------------------------------------
   0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1101  (13 在内存中的存储)

Rebelión (~)

Negue los bits involucrados en la operación, 0 se convierte en 1 y 1 se convierte en 0

  • ~1=0
  • ~0=1

ejemplo:

~ 1111 1111 -- 1111 1111 -- 1111 1111 -- 1111 0111  (-9 在内存中的存储)
-----------------------------------------------------------------------------------
 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1000  (8 在内存中的存储)

XOR (^)

Compara los bits que intervienen en la operación, si son iguales se tomará 0, si son diferentes se tomará 1.

  • 1^1=0
  • 1^0=1
  • 0^0=0

ejemplo:

   0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1001  (9 在内存中的存储)
 ^ 0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 0101  (5 在内存中的存储)
-----------------------------------------------------------------------------------
   0000 0000 -- 0000 0000 -- 0000 0000 -- 0000 1100  (12 在内存中的存储)

Ejemplo 2: ¿
Intercambiar dos números sin crear una tercera variable temporal?

int a =10;
int b =35;
a=a^b;
b=a^b;
a=a^b;
Debug.Log($"a={a}");
Debug.Log($"b={b}");

El resultado de salida es:
a=35
b=10

explicar:

  1. a=a^b
  2. b=a b b b^b es 0, por lo que el resultado es a
  3. a=a^b= a b a a^a es 0, entonces el resultado es b

cambio

Desplazamiento a la izquierda (<<)

Desplace todos los bits binarios de los datos hacia la izquierda una cierta cantidad de bits, descarte los bits altos y complete los bits bajos con ceros.

ejemplo:

3<<2
1. 3的二进制数为:0000 0000 0000 0000 0000 0000 0000 0011
2. 把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。
3. 得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100,则转换为十进制是12。

Significado matemático:

  • Siempre que el número no se desborde, para números positivos y negativos, desplazar un bit hacia la izquierda equivale a multiplicar por 2 elevado a 1, y desplazar n bits hacia la izquierda equivale a multiplicar por 2 elevado a la enésima potencia.

Mover a la derecha (>>)

Desplace todos los bits binarios de los datos hacia la derecha un cierto número de bits, descarte los bits bajos y agregue 0 o 1 a los bits altos. Si el bit más alto de los datos es 0, entonces agregue 0; si el bit más alto El bit es 1, luego suma 1.

ejemplo:

11 >> 2
1. 11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011
2. 把低位的最后两个数字移出,因为高位是0,所以在高位补0
3. 得到的最终结果是0000 0000 0000 0000 0000 0000 0000 0010。转换为十进制是2。

Significado matemático:

  • Desplazar un bit hacia la derecha equivale a dividir por 2, y desplazar n bits hacia la derecha equivale a dividir por 2 elevado a la enésima potencia.

Supongo que te gusta

Origin blog.csdn.net/weixin_42498461/article/details/131069988
Recomendado
Clasificación