*補碼錶示git
- 信息儲存
- gcc -m32/64
當沒有-m32或-m64參數時,通常狀況下會生成跟操做系統位數一致的代碼
gcc -m32 能夠在64位機上(好比實驗樓的環境)生成32位的代碼安全
- 數值運算
- 信息的存儲
- 整數的表示
- 符號數與無符號數之間的轉換
有符號數轉換爲無符號數時,負數轉換爲大的正數(能夠理解爲原值加上2的n次方),而正數保持不變。
x<0 T2Uw(x)=x+2^w
x>0 T2Uw(x)=x+2^w
(w表示數據類型的位數)
無符號數轉換爲有符號數時,對於小的數將保持原值,對於大的數則轉換爲負數(能夠理解爲原值減去2的n次方)
u<2^(w-1) U2Tw(u)=u
u>=2^(w-1) U2Tw(u)=u-2^w
(w表示數據類型的位數)網絡
- 截斷數字
截斷一個數字可能會改變其值,這也是值溢出的一種形式。,
無符號數x,將其截斷成k位,mod 2^k。
有符號數x,先將其看做無符號數截斷,而後在轉換成有符號數。學習
- 補碼的非
補碼非運算
對於範圍在[-2^(w-1),2^(w-1))中的x,補碼的非運算有以下兩種狀況:
x=-2^(w-1)時,爲-2^(w-1)
x>-2^(w-1)時,爲-x
位級補碼非
對每一位求補,再對結果+1
設k爲最右面的1的位置,將k左邊的全部位取反。編碼