數據類型取值范圍計算


之前一直不清楚數據類型的取值范圍是怎么計算的,現在弄懂了,記錄一下。

char型示例

signed char類型取值范圍計算[1]

假設一個字符型變量占用一個字節,也就是8個二進制位(bit),由於是signed,所以最高為可以為1(負數)或0(正數)。

  • 當最高位為1時,能表示的范圍是【1000 0000】-【1111 1111】。然后按照二進制轉十進制的規則計算,二進制“1000 0000”將8bit全部取反,變成“0111 1111”,再加上1變成“1000 0000”,此時按照無符號數來計算,其十進制為128,加上負號變為-128。“1111 1111”根據相同規則轉換為十進制數-1。其取值范圍為【-128,-1】。
  • 當最高位為0時,能表示的范圍是【0000 0000】-【0111 1111】。二進制“0000 0000”的十進制為0,“0111 1111”的十進制為“\(2^{6}\)+\(2^{5}\)+\(2^{4}\)+\(2^{3}\)+\(2^{2}\)+\(2^{1}\)+\(2^{0}\) = 127,因此符號位為0時,其取值范圍為【0,127】。

結合兩種情況,整個signed char類型的取值范圍為【-128,127】。

unsigned char類型取值范圍計算

unsigned是無符號的,所以它能表示的范圍是【0000 0000】-【1111 1111】,將范圍轉化為十進制數為【0,255】。

其他類型

其他類型以此類推。

Reference



  1. https://zhuanlan.zhihu.com/p/25755257 ↩︎


免責聲明!

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



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