2019-2020-1 20175333《信息安全系統設計基礎》第三週學習總結

2019-2020-1 20175333曹雅坤 《信息安全系統設計基礎》第三週學習總結


*補碼錶示git

  • 正數的原碼、反碼以及補碼是其自己。
  • 負數的原碼是其自己,反碼是對原碼除符號位以外的各位取反,補碼則是反碼加1
  • 補碼的優勢:
    補碼的範圍比原碼和反碼的範圍大出許多。
    對於有符號整數的運算可以把符號位同數值位爲一塊兒處理
    若是單獨考慮符號位,CPU須要對最高位進行判斷,計算機的最底層實現會變得很是複雜。
  • 整數溢出
    整數是一個定長,它有儲存的最大值,當去存儲一個大於這個值的最大值時,將會致使溢出。
    溢出會致使不可知的問題。沒有辦法去用一個應用程序來判斷先前計算的結果在其實是否也是正確的,可致使某些類型的bug
  • 信息儲存

  • 每一個計算機都有一個字長,指明整數和指針數據的標稱大小。由於虛擬地址是以這樣的一個字來編碼的,因此字長最重要的系統參數就是虛擬地址空間的最大大小。
  • gcc -m32/64

當沒有-m32或-m64參數時,通常狀況下會生成跟操做系統位數一致的代碼
gcc -m32 能夠在64位機上(好比實驗樓的環境)生成32位的代碼安全

  • 數值運算
  • 無符號數
  • 有符號數(補碼)
  • 信息的存儲
  • 大段與小端:不一樣數據類型對待同一數據有着不一樣的處理方法
  • 網絡字節序:網絡上的數據流是字節流,第一個字節被視爲高位,大端字節序。
    在傳輸時能夠不進行轉換。
  • 整數的表示
  • char 字符型數據,佔用一個字節
  • unsigned char 無符號字符型數據,佔用一個字節
  • short 短整形數據,佔用兩個字節
  • unsigned short 無符號短整型數據,佔用兩個字節
  • int 整形數據,佔用兩個字節
  • unsigned int 無符號整型數據,佔用兩個字節
  • long 長整型數據,佔用四個字節
  • unsigned long 無符號長整型數據,佔用四個字節
  • 符號數與無符號數之間的轉換

有符號數轉換爲無符號數時,負數轉換爲大的正數(能夠理解爲原值加上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左邊的全部位取反。編碼

代碼託管

相關文章
相關標籤/搜索