Golang 整数类型最大值和最小值的定义 您所在的位置:网站首页 32位最大值 Golang 整数类型最大值和最小值的定义

Golang 整数类型最大值和最小值的定义

2024-07-09 12:29| 来源: 网络整理| 查看: 265

在写一道算法时需要用到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 实验室设备网 版权所有