文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Go中Int的最大数值是什么

2023-06-25 14:55

关注

本篇内容主要讲解“Go中Int的最大数值是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go中Int的最大数值是什么”吧!

总结:

import "math/bits"const (    MaxUint uint = (1 << bits.UintSize) - 1    MaxInt int = (1 << bits.UintSize) / 2 - 1    MinInt int = (1 << bits.UintSize) / -2)

背景:

我想你知道,uint类型的大小与uint32uint64相同,具体取决于您所在的平台。通常,只有在没有接近最大值风险的情况下,才会使用无尺寸的版本,因为没有尺寸规格的版本可以使用“本机”类型,这取决于平台,并且它往往更快。

请注意,更 “快” 是因为使用非本机类型需要处理器执行额外的数学计算和边界检查,以便模拟更大或更小的整数。因此,处理器(或编译器的优化代码)性能会比添加边界检查的代码要好。

话虽如此,在某些情况下,了解您正在使用的内容仍然很有用。

“math/bits“ 包中含有以字节为单位的uint大小(译者注:UintSize )。要确定最大值,将 1 左移许多位,再减去 1。即:(1 << bits.UintSize) - 1

请注意,在计算 uint 的最大值时,您通常需要将其显式放入一个 uint(或更大的类型)类型变量中,否则编译器可能会失败,因为它会默认尝试将该计算分配给一个有符号int(很明显,它不适合),所以:

const MaxUint uint = (1 << bits.UintSize) - 1

这是您问题的直接答案,但您可能对一些相关的计算感兴趣。

根据 spec,uintint 的大小始终相同。

uint 32 位或 64 位

intuint 大小相同

因此,我们也可以使用这个常量来确定 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<<bits.UintSize)/2 - 1    var mi int64 = (1 << bits.UintSize) / -2    fmt.Printf(" MinInt32: %d\n", mi32)    fmt.Printf(" MaxInt32:  %d\n", i32)    fmt.Printf("MaxUint32:  %d\n", ui32)    fmt.Printf(" MinInt64: %d\n", mi64)    fmt.Printf(" MaxInt64:  %d\n", i64)    fmt.Printf("MaxUint64:  %d\n", ui64)    fmt.Printf("  MaxUint:  %d\n", ui)    fmt.Printf("   MinInt: %d\n", mi)    fmt.Printf("   MaxInt:  %d\n", i)    fmt.Println("MaxUint:", uint(math.MaxUint))    fmt.Println("MinInt:", math.MinInt)    fmt.Println("MaxInt:", math.MaxInt)    fmt.Println("系统架构:", runtime.Compiler, runtime.GOARCH, runtime.GOOS)    fmt.Println("Int 大小:", strconv.IntSize)}

输出:

MinInt32: -2147483648 MaxInt32:  2147483647MaxUint32:  4294967295 MinInt64: -9223372036854775808 MaxInt64:  9223372036854775807MaxUint64:  18446744073709551615  MaxUint:  18446744073709551615   MinInt: -9223372036854775808   MaxInt:  9223372036854775807MaxUint: 18446744073709551615MinInt: -9223372036854775808MaxInt: 9223372036854775807系统架构: gc amd64 darwinInt 大小: 64

到此,相信大家对“Go中Int的最大数值是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯