如果我在 C++ 中是正确的,则 LSB 是最后一位并确定整数的符号。因此,例如,如果是 8 位 1111 1111 将是 -127 而 1111 1110 将是 127。如果我错了,请纠正我,但这不相关。
我会在 Go 中检查整数的符号,所以我写了以下内容:
func signCheck(n int8) {
var sign int8 = 1<<7
if n&sign == 1 {
fmt.Printf("%d is odd - %b\n", n, n)
} else {
fmt.Printf("%d is even - %b\n", n, n)
}
}
这将打印出“constant 128 overflows int8”,但这是有道理的,因为只有 7 位用于确定一个数字。所以我修改如下:
func signCheck(n int8) {
if n&1<<7 == 1 {
fmt.Printf("%d is odd - %b\n", n, n)
} else {
fmt.Printf("%d is even - %b\n", n, n)
}
}
在这种情况下,我不必说它是 int8,但我用 -127 和 127 对其进行了测试,得到了以下打印结果:
-127 is even - -1111111
127 is even - 1111111
那么在这种情况下我应该如何检查标志? 去版本 go1.13.1 linux/amd64
去
二元运算符
ABOUTYOU
相关分类