Golang 整数类型最大值和最小值的定义 | 您所在的位置:网站首页 › 32位最大值 › Golang 整数类型最大值和最小值的定义 |
在写一道算法时需要用到int32类型的最大值和最小值,但是查了查在go的标准库中没有定义这些变量,所以当需要使用整数类型的最大值和最小值的时候,我们需要自己手动去定义。 无符号整型uint其最小值是0,那么二进制表示就是所有位都为0: const UINT_MIN uint = 0其最大值二进制表示所有位数表示为1,通过位运算: const UINT_MAX uint = ^uint(0) 有符号整型int根据补码,其最大值二进制表示,首位为0,其余位为1: const INT_MAX = int(^uint(0) >> 1)根据补码,其最小值二进制表示,首位为1, 其余位为0: const INT_MIN = ^INT_MAX 需要注意的地方int类型和uint类型所占用的长度和系统位数有关,在32位系统下,int的长度和int32长度相同,在64位系统下,int的长度和int64长度相同,uint同理。 const ( INT_MAX = int32(^uint32((0)) >> 1) INT_MIN = ^INT_MAX ) func main() { fmt.Println(INT_MAX, INT_MIN) var a int var b int32 var c int64 fmt.Println("size of a: ", unsafe.Sizeof(a)) fmt.Println("size of b: ", unsafe.Sizeof(b)) fmt.Println("size of c: ", unsafe.Sizeof(c)) }输出: 2147483647 -2147483648 size of a: 8 size of b: 4 size of c: 8整数详情可以看这里:https://golang.google.cn/ref/spec#Numeric_types |
CopyRight 2018-2019 实验室设备网 版权所有 |