您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

一文解析Go中Int的最大数值

2024/3/31 5:47:08发布12次查看
本文由go语言教程栏目给大家介绍go 中 int 的最大数值 ,希望对需要的朋友有所帮助!
总结:
import math/bitsconst (    maxuint uint = (1 << bits.uintsize) - 1    maxint int = (1 << bits.uintsize) / 2 - 1    minint int = (1 << bits.uintsize) / -2)
背景:
我想你知道,uint类型的大小与uint32或uint64相同,具体取决于您所在的平台。通常,只有在没有接近最大值风险的情况下,才会使用无尺寸的版本,因为没有尺寸规格的版本可以使用“本机”类型,这取决于平台,并且它往往更快。
请注意,更 “快” 是因为使用非本机类型需要处理器执行额外的数学计算和边界检查,以便模拟更大或更小的整数。因此,处理器(或编译器的优化代码)性能会比添加边界检查的代码要好。
话虽如此,在某些情况下,了解您正在使用的内容仍然很有用。
“math/bits“ 包中含有以字节为单位的uint大小(译者注:uintsize )。要确定最大值,将 1 左移许多位,再减去 1。即:(1 << bits.uintsize) - 1
请注意,在计算 uint 的最大值时,您通常需要将其显式放入一个 uint(或更大的类型)类型变量中,否则编译器可能会失败,因为它会默认尝试将该计算分配给一个有符号int(很明显,它不适合),所以:
const maxuint uint = (1 << bits.uintsize) - 1
这是您问题的直接答案,但您可能对一些相关的计算感兴趣。
根据 spec,uint 和 int 的大小始终相同。
uint 32 位或 64 位
int 与 uint 大小相同
因此,我们也可以使用这个常量来确定 int 的最大值,方法是采用相同的答案并除以 2,然后减去 1。 即:(1 << bits.uintsize) / 2 - 1
以及 int 的最小值,通过将 1 移位那么多位并将结果除以 -2。 即:(1 << bits.uintsize) / -2
总之:
** maxuint: ** (1 << bits.uintsize) - 1
** maxint: ** (1 << bits.uintsize) / 2 - 1
** minint: ** (1 << bits.uintsize) / -2
完整示例(应与下图相同):
package mainimport (    fmt    math    math/bits    runtime    strconv)func main() {    var mi32 int64 = math.minint32    var mi64 int64 = math.minint64    var i32 uint64 = math.maxint32    var ui32 uint64 = math.maxuint32    var i64 uint64 = math.maxint64    var ui64 uint64 = math.maxuint64    var ui uint64 = (1 << bits.uintsize) - 1    var i uint64 = (1< 输出:
minint32: -2147483648 maxint32:  2147483647maxuint32:  4294967295 minint64: -9223372036854775808 maxint64:  9223372036854775807maxuint64:  18446744073709551615  maxuint:  18446744073709551615   minint: -9223372036854775808   maxint:  9223372036854775807maxuint: 18446744073709551615minint: -9223372036854775808maxint: 9223372036854775807系统架构: gc amd64 darwinint 大小: 64
原文地址:https://stackoverflow.com/questions/6878...
译文地址:https://learnku.com/go/t/62359
以上就是一文解析go中int的最大数值的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product