2018-2019-1 20165230《信息安全系統設計基礎》第二週學習總結

20165230 2018-2019-1 《信息安全系統設計基礎》第二週學習總結

教材學習內容總結

  • 排列表示一個對象的字節有兩個通用的規則:小端法(最低有效字節在最前面)和大端法(最高有效字節在前面)。
  • 表達式x>>k會將x算術右移k(左端補k個有效位)個位置,而x>>>k會對k作邏輯(左端補k個0)右移。
  • 要將一個補碼數字轉換爲一個更大的數據類型,可執行一個符號擴展。
  • long:32位機器:4字節;64位機器:8字節
  • 負數的範圍比整數的範圍大1
  • 無符號數的編碼:B2U(x->)=x*(2^x)之和
  • 補碼編碼(計算機中最多見的有符號數表示方式):B2T=最高位x最高位權重+其餘位權重之和
  • 要將一個補碼數字轉換爲一個更大的數據類型,可執行一個符號擴展。
  • 在相同長度的無符號和有符號整數之間進行強制類型轉換時,大多數C語言實現遵循的原則是底層的位模式不變。
  • 在相同長度的無符號和有符號整數之間進行強制類型轉換時,大多數C語言實現遵循的原則是底層的位模式不變。
  • 最多見的浮點表示方式是由IEEE標準754定義的。它提供了幾種不一樣的精度,最多見的是單精度(32位)和雙精度(64位)。
  • 因爲表示的精度有限,浮點運算是不可結合的(書中舉例P20)。git

  • C語言容許在各類不一樣數據類型之間作強制類型轉換。但要注意,將負數轉換爲無符號數可能會獲得0,且強制類型轉換的結果保持位值不變,只是改變了解釋這些位的方式。
  • C語言支持全部整數數據類型的有符號和無符號運算,大多數數字都默認爲是有符號的,因此要建立一個無符號常量,必需要就愛上後綴字符「U」或者‘u’,如123U。
  • 零擴展和符號擴展:零擴展應用於無符號整數,符號擴展應用於有符號整數。github

  • 截斷無符號數:x'=xmod(2^k) 截斷k位
  • 截斷補碼數值:x'=U2(T_k)(xmod2^k)
  • 有符號數和無符號數的轉換常常會致使程序出錯而又不容易被發現,所以編程時必定要注意。編程

  • 無符號數和補碼的乘法同樣,除法都是進行移位。無符號數的除法移位後補0,補碼的除法移位後補1。
  • 區分位運算和邏輯運算的區別與運算方法。安全

教材學習中的問題和解決過程

  • 問題1:在看有符號數和無符號數之間的轉換時,對轉換規則中「位模式不變」產生了疑惑。
  • 問題1解決方案:強制類型轉換的結果保持位值不變,轉換前的負數補碼錶示與轉換後的16位無符號數表示是徹底同樣的。

代碼調試中的問題和解決過程

  • 問題1:gcc編譯出錯
  • 問題1解決:經過錯誤提示「unrecognized command line option ‘-O’」發現是將小寫的o寫成了大寫,致使出錯
  • 問題2:git出錯
  • 問題1解決:經過查看博客找到了解決方法:
    git remote add origin https://github.com/用戶名/xxx.git

$git fetch origin //獲取遠程更新學習

$git merge origin/master //把更新的內容合併到本地分支fetch

代碼託管

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 30 /30 1/1 8/8
第二週
第三週
第四周
第五週
相關文章
相關標籤/搜索