2018-2019-1 20165230《信息安全系統設計基礎》第二周學習總結
阿新 • • 發佈:2018-10-14
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《信息安全系統設計基礎》第二周學習總結