新聞中心
本文由go語言教程欄目給大家介紹Go 中 Int 的最大數(shù)值 ,希望對(duì)需要的朋友有所幫助!

成都創(chuàng)新互聯(lián)公司長(zhǎng)期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為公主嶺企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作,公主嶺網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
總結(jié):
import "math/bits"const (
MaxUint uint = (1 << bits.UintSize) - 1
MaxInt int = (1 << bits.UintSize) / 2 - 1
MinInt int = (1 << bits.UintSize) / -2)
背景:
我想你知道,uint類型的大小與uint32或uint64相同,具體取決于您所在的平臺(tái)。通常,只有在沒有接近最大值風(fēng)險(xiǎn)的情況下,才會(huì)使用無尺寸的版本,因?yàn)闆]有尺寸規(guī)格的版本可以使用“本機(jī)”類型,這取決于平臺(tái),并且它往往更快。
請(qǐng)注意,更 “快” 是因?yàn)槭褂梅潜緳C(jī)類型需要處理器執(zhí)行額外的數(shù)學(xué)計(jì)算和邊界檢查,以便模擬更大或更小的整數(shù)。因此,處理器(或編譯器的優(yōu)化代碼)性能會(huì)比添加邊界檢查的代碼要好。
話雖如此,在某些情況下,了解您正在使用的內(nèi)容仍然很有用。
“math/bits“ 包中含有以字節(jié)為單位的uint大小(譯者注:UintSize )。要確定最大值,將 1 左移許多位,再減去 1。即:(1 << bits.UintSize) - 1
請(qǐng)注意,在計(jì)算 uint 的最大值時(shí),您通常需要將其顯式放入一個(gè) uint(或更大的類型)類型變量中,否則編譯器可能會(huì)失敗,因?yàn)樗鼤?huì)默認(rèn)嘗試將該計(jì)算分配給一個(gè)有符號(hào)int(很明顯,它不適合),所以:
const MaxUint uint = (1 << bits.UintSize) - 1
這是您問題的直接答案,但您可能對(duì)一些相關(guān)的計(jì)算感興趣。
根據(jù) spec,uint 和 int 的大小始終相同。
因此,我們也可以使用這個(gè)常量來確定 int 的最大值,方法是采用相同的答案并除以 2,然后減去 1。 即:(1 << bits.UintSize) / 2 - 1
以及 int 的最小值,通過將 1 移位那么多位并將結(jié)果除以 -2。 即:(1 << bits.UintSize) / -2
總之:
** MaxUint: ** (1 << bits.UintSize) - 1
** MaxInt: ** (1 << bits.UintSize) / 2 - 1
** MinInt: ** (1 << bits.UintSize) / -2
完整示例(應(yīng)與下圖相同):
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系統(tǒng)架構(gòu): gc amd64 darwin
Int 大小: 64
文章標(biāo)題:一文解析Go中Int的最大數(shù)值
轉(zhuǎn)載來源:http://www.dlmjj.cn/article/djsshig.html


咨詢
建站咨詢
