Operador bit a bit NOT en Golang

El operador NOT bit a bit en el mundo de la programación generalmente toma un número y devuelve los bits invertidos de ese número como se muestra a continuación:

Bitwise NOT of 1 = 0
Bitwise NOT of 0 = 1

Ejemplo:

Input : X = 010101
Output : Bitwise NOT of X = 101010

Pero Golang no tiene ningún operador Bitwise NOT (~) especificado unario o puede decir Bitwise Complement operator como otros lenguajes de programación (C/C++, Java, Python, etc.). Aquí, debe usar el operador Bitwise XOR(^) como operador Bitwise NOT . ¿Pero cómo?

Entendamos cómo Bitwise XOR toma dos patrones de bits de igual longitud y realiza la operación OR exclusiva en cada par de bits correspondientes.

1 XOR 1 = 0 
1 XOR 0 = 1 
0 XOR 0 = 0
0 XOR 1 = 1 

Aquí puede ver el resultado de XOR(M, N) = 1 solo si M != N, de lo contrario será 0 . Entonces, aquí usaremos el operador XOR como un operador unario para implementar el complemento a uno de un número.
En Golang, suponga que tiene un bit M dado, entonces ^M = 1 ^ M que será igual al complemento de uno o puede decir el resultado del operador Bitwise NOT.

Ejemplo: Suponga que tiene los bits dados como 010101.

Input: 11111111 XOR 00001111
Output: 11110000
   
package main
  
import "fmt"
  
func main() {
  
    // taking the number in the hexadecimal
    // form it is 15 i.e. 00001111 in 8-bit form
    var bitwisenot byte = 0x0F
      
    // printing the number in 8-Bit
    fmt.Printf("%08b\n", bitwisenot) 
      
    // using the ^M = 1 ^ M
    fmt.Printf("%08b\n", ^bitwisenot)
}

Producción:

00001111
11110000

Aquí, puede ver, si simplemente resolvemos Bitwise Not de 00001111, entonces será igual a 11110000.

Publicación traducida automáticamente

Artículo escrito por Nikitha Sri y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *