c++中提供的整數型別有三種:int、long、short,每種型別又分為有符號和無符號兩種型別。有符號整數既可以表示非負整數,又可以表示負整數;但是,無符號整數不能表示負數,只能表示非負整數。
(一)無符號整數
在記憶體中,int整數通常佔4位元組,這裡,我們假定int為32位,那麼無符號整數表示的取值範圍為0x00000000~0xffffffff,轉換為十進位制為0~4294967295。當無符號整數表示的整數小於32位的時候,不足的空間,在最高位補0。比如數字5對應的二進位制位101,那麼剩餘的29位在最高位補0,填充後的結果為:00000000000000000000000000000101。在計算中,無符號整數表示的正整數範圍是有符號整數的2倍。
(二)有符號整數
在有符號整數中,資料的最高位代表符號位,1為負號,0為正號,在計算中,有符號整數是以補碼的形式來存放的。以int整數為例,當資料的位數不足32位的時候,先將該數轉換為補碼,然後擴充套件該數的符號位至第31位。比如,5的補碼是0101,那麼只需要將最高位的0向左不斷擴充套件直至第31位,最終結果為:00000000000000000000000000000101;-5的補碼為1011,那麼
只需要將最高位的1向左擴充套件至第31位,最終結果為:11111111111111111111111111111011。
在32位整數中,有符號整數表示的非負整數範圍為:0x00000000~0x7fffffff;負數的表示區間為:0x80000000~0xffffffff。
在我們討論的c/c++中,有符號整數都是以補碼形式存放的,而且在幾乎所有的程式語言中都是如此,因為計算機只會做加法,不會做減法,所以需要將減法轉換為加法。
如設有符號數x,y,那麼x-y的值會被轉換為x(補)+(-y)(補);例如,(3-2)可轉換成(3+(-2)),運算過程為:3的十六進製制補碼0x00000003加上(-2)的補碼0xfffffffe,從而得到0x100000001。由於儲存範圍為4位元組大小,兩數相加後產生了進製,超出了儲存範圍,超出的1將被捨棄。進製被捨棄後,結果為0x00000001。
C 的整數型別
顧名思義,整數型別的變數的值為整數。數學上的整數可以從負無窮大到正無窮大,但是由於計算機的儲存單元是有限的,所以計算機語言提供了整數型別的值總是在一定範圍之內。c 中有8種整數型別 短位元組型 sbyte 位元組型 byte 短整型 short 無符號短整型 ushort 整型 int 無符號整型 ...
C 的整數型別
顧名思義,整數型別的變數的值為整數。數學上的整數可以從負無窮大到正無窮大,但是由於計算機的儲存單元是有限的,所以計算機語言提供了整數型別的值總是在一定範圍之內。c 中有8種整數型別 短位元組型 sbyte 位元組型 byte 短整型 short 無符號短整型 ushort 整型 int 無符號整型 ...
C語言 整數型別
reg為暫存器 字長,是說這個暫存器是多少寬的,每個暫存器可以表示32bit資料,也是說cpu與ram每一次傳遞的資料也是32bit 計算機內部一切都是二進位制 所有的型別,只是說我們以什麼方式去看待它,並不是表明,它在內部是怎麼 表達的。18 00010010 18 我們在做十進位制運算時,我們實...