小螞蟻學習C語言(29)——C語言補碼(下)

解釋如下問題: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

相關文章
相關標籤/搜索