1. 程式人生 > 實用技巧 >C++ 基本資料型別中int、long等整數型別取值範圍及原理看這一篇就夠了

C++ 基本資料型別中int、long等整數型別取值範圍及原理看這一篇就夠了

C++ 基本資料型別中int、long等整數型別取值範圍及原理看這一篇就夠了


基礎知識

計算機中所有的整數都是以補嗎的形式儲存的。正數的補碼與原碼相同,負數的補碼是對其原碼逐位取反,但符號位除外;然後整個數加1。零分為+0和-0。

C++ 整數型別及所佔記憶體

在這裡插入圖片描述

取值範圍計算

無符號型別
以一個4位二進位制舉例
全部為資料位。4位二進位制編碼:0000-1111共8種,所以能表示0-7(23-1)。
總結:對於有符號型別,如果是n位,則表示範圍為 0 - 2n-1。
有符號型別
以一個4位二進位制舉例
如果以原碼錶示:對於有符號型別,最高位是符號位,剩下的4-1=3位是資料位。所以資料為最多有8種編碼情況。000-111所以取值範圍為:-7(23

-1)~-0和+0到+7,共15個數字。

計算機實際以補碼形式儲存整數。
對於正數,補碼與原碼相同,範圍依舊是+0到+7(23-1)。
對於負數,補碼是對其原碼逐位取反,但符號位除外;然後整個數加1。

-7的二進位制原碼:1111,所以補碼為:1001。
-1的二進位制原碼:1001,所以補碼為:1111。
-0的二進位制原碼:1000,所以補碼為:0000。與+0相同。(所以用它來表示個其他數吧)
沒有任何數的補碼是:1000這個編碼。所以多出來了。所以,規定1000這個補碼編碼為-8。

綜上:4位二進位制在計算機中,表示資料的範圍:-8(23)-7(23-1)。

總結:如果有符號型別資料部分佔n位,則表示範圍為 -2n - +2n

基本資料型別中int、long等整數型別取值範圍

在這裡插入圖片描述