1. 程式人生 > >2018-2019-1 20165230《信息安全系統設計基礎》第二周學習總結

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

info src 允許 代碼行數 遠程 截斷 有效 默認 大寫

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)。

  • C語言允許在各種不同數據類型之間做強制類型轉換。但要註意,將負數轉換為無符號數可能會得到0,且強制類型轉換的結果保持位值不變,只是改變了解釋這些位的方式。
  • C語言支持所有整數數據類型的有符號和無符號運算,大多數數字都默認為是有符號的,所以要創建一個無符號常量,必須要就愛上後綴字符“U”或者‘u’,如123U。
  • 零擴展和符號擴展:零擴展應用於無符號整數,符號擴展應用於有符號整數。

  • 截斷無符號數: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 //把更新的內容合並到本地分支

代碼托管

學習進度條

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

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