答案 0 :(得分:3)
The Go Programming Language Specification
数字类型表示整数或浮点值的集合。 预先声明的与体系结构无关的数字类型包括:
uint8 the set of all unsigned 8-bit integers (0 to 255) uint16 the set of all unsigned 16-bit integers (0 to 65535) uint32 the set of all unsigned 32-bit integers (0 to 4294967295) uint64 the set of all unsigned 64-bit integers (0 to 18446744073709551615) int8 the set of all signed 8-bit integers (-128 to 127) int16 the set of all signed 16-bit integers (-32768 to 32767) int32 the set of all signed 32-bit integers (-2147483648 to 2147483647) int64 the set of all signed 64-bit integers (-9223372036854775808 to 9223372036854775807) byte alias for uint8 rune alias for int32
n位整数的值是n位宽并使用表示 二进制补码算法。
还有一组预先声明的数字类型 特定于实现的大小:
uint either 32 or 64 bits int same size as uint uintptr an unsigned integer large enough to store the uninterpreted bits of a pointer value
当不同的数字类型混合在一起时,需要转换 表达或转让。
<< left shift integer << unsigned integer >> right shift integer >> unsigned integer
移位运算符将左操作数移位移位计数 由右操作数指定。如果,他们实施算术转移 左操作数是有符号整数,如果是,则逻辑移位 无符号整数。班次计数没有上限。转移 表现为好像左操作数被移位n次1 数量n。结果,x <&lt;&lt; 1与x * 2和x>&gt;相同。 1是 与x / 2相同但截断为负无穷大。
在Go中,它是无符号整数移位。 Go有签名和无符号整数。
取决于值0xFF
的类型。假设它是无符号整数类型之一,例如uint
。
package main
import "fmt"
func main() {
n := uint(0xFF)
fmt.Printf("%X\n", n)
n = n >> 3
fmt.Printf("%X\n", n)
}
输出:
FF
1F
假设它是有符号整数类型之一,例如int
。
package main
import "fmt"
func main() {
n := int(0xFF)
fmt.Printf("%X\n", n)
n = int(uint(n) >> 3)
fmt.Printf("%X\n", n)
}
输出:
FF
1F