golang 判斷平台是32位還是64位


在strconv包中有個常量

  const intSize  =  32  <<  (  ^uint(0)  >>  63  )

  const IntSize = intSize

在32位平台這個值為32;在64位平台,這個值為64; 因此可以通過這個來判斷平台的位數.

原理:

在32平台系統:

  1. uint(0)在平台底層是0x00000000

  2. ^uint(0)在平台底層是0xFFFFFFFF

  3. ^uint(0) >> 63 在底層平台是0x00000000,也就是0

  4. 32 << 0 結果是0

在64平台系統:

  1. uint(0)在平台底層是0x0000000000000000

  2. ^uint(0)在平台底層是0xFFFFFFFFFFFFFFFF

  3. ^uint(0) >> 63 在底層平台是0x0000000000000001,也就是1

  4. 32 << 1 結果是32*2  =  64

非常巧妙!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM