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 |
|
第二週 |
|
|
|
|
第三週 |
|
|
|
|
第四周 |
|
|
|
|
第五週 |