📜  Golang 中的按位非运算符

📅  最后修改于: 2021-10-25 02:16:30             🧑  作者: Mango

编程世界中的按位非运算符通常取一个数字并返回该数字的反转位,如下所示:

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

例子:

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

但是 Golang 没有任何指定的一元 Bitwise NOT(~) 或者您可以像其他编程语言(C/C++、 Java、 Python等)一样说 Bitwise Complement运算符。在这里,您必须使用Bitwise XOR(^)运算符作为 Bitwise NOT 运算符 。但是如何?

让我们了解按位异或如何接受任何两个等长位模式并对每对对应位执行异或运算。

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

在这里,只有当 M != N 时,您才能看到XOR(M, N) = 1的结果,否则它将是 0 。所以在这里,我们将使用 XOR运算符作为一元运算运算符来实现数字的补码。
在 Golang 中,假设你有一个给定的位 M,所以^M = 1 ^ M这将等于一个的补码,或者你可以说按位非运算符结果。

示例:假设您将给定的位设为 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)
}

输出:

00001111
11110000

在这里,您可以看到,如果我们简单地解决 00001111 的按位非,那么它将等于 11110000。