解釋如下問題:c++
vc++6.0中一個int類型的變量所能存儲的數字的範圍是多少算法
int 類型變量所能儲存的最大整數用十六進制表示是: 7FFFFFFFspa
int 類型變量所能存儲的絕對值最大的負整數用十六進制表示是:80000000.net
最小負數的二進制代碼是多少blog
最大正數的二進制代碼是多少ci
已知一個整數的二進制代碼求出原始數字 get
數字超過最大整數會怎樣博客
不一樣類型數據的相互轉化table
舉個例子就能明白上面的問題:變量
設置爲一個char類型的變量,賦值一個int類型的值。
char i = 0 …… 128
printf("%d",i);
由於char只有一個字節,因此int類型高位會被截掉
對應的二進制數字 | 十進制數字 |
0000 0000 | 0 |
0000 0001 | 1 |
0000 0010 | 2 |
…… | …… |
0111 1111 | 127 |
1000 0000 | -128 |
1000 0001 | -127 |
1111 1111 | -1 |
經過這個表,能夠看出來,當數字是127時,對應的二進制是 0111 1111,數字再加1,變成了128,二進制成了 1000 0000。由補碼的知識能夠知道,當最高位是1的時候,表示是一個負數,使用補碼的運算法則,能夠獲得一個十進制數 -128。也就是說,當輸入一個數字128,輸出的倒是 -128。繼續加1,輸出的值會從 -128,-127,-126……直到-1 ,二進制(1111 1111)2
這是用char類型作了一個實驗,int的字節數多,取值範圍要大的多,可是原理都是同樣的。
學PHP的小螞蟻 博客 http://my.oschina.net/woshixiaomayi/blog