30秒到达战场
该^运算符是按位补码运算符。规范:算术运算符:对于整数操作数,一元运算符+、-和^定义如下:+x is 0 + x-x negation is 0 - x^x bitwise complement is m ^ x with m = "all bits set to 1" for unsigned x and m = -1 for signed x所以1在二进制中是单个 1 位前面全是零:0000000000000000000000000000000000000000000000000000000000000001所以按位补码是一个单独的 0 位,前面是全 1:1111111111111111111111111111111111111111111111111111111111111110The^1是一个无类型常量表达式。当它被传递给一个函数时,它必须被转换为一个类型。由于1是无类型整型常量int,因此将使用其默认类型。int在 Go 中使用2 的补码表示,其中负数以 a 开头1。完整的数字是-1,数字小一(二进制)是-2等等。上面的位模式是 的 2 的补码表示-2。要打印位模式和类型,请使用以下代码:fmt.Println(^1)fmt.Printf("%T\n", ^1)fmt.Printf("%064b\n", 1)i := ^1fmt.Printf("%064b\n", uint(i))它输出(在Go Playground上试试):-2int00000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111110