按位取反
代码
fmt.Println(^1)
-2
取一个负数的绝对值,就是按位取反再加1
举例, 将-2的每一位分别打印出来:
var x int32 = -2
for i := 0; i < 32; i++ {
//先打印低位,右移一位,在打印倒数第二位,直到打印完毕
fmt.Println(x & 1)
x = x >> 1
}
进制表示
package main
import (
"fmt"
)
func main() {
var x int32 = 0
//构造 -2 的 2 进制表示
for i := 32; i >= 1; i-- {
x += 1 << uint32(i)
}
fmt.Printf("二进制x: %b\n", x)
fmt.Printf("十进制x: %d\n", x)
fmt.Printf("uint32(x): %b\n", uint32(x))
fmt.Printf("int32(x): %b\n", int32(x))
var y int = -2
for i := 0; i < 32; i++ {
fmt.Print(y & 1)
y = y >> 1
}
}