20145337 《信息安全系統設計基礎》第3周學習總結

20145337 《信息安全系統設計基礎》第3周學習總結

教材學習內容總結

第一節 信息存儲

1、十六進制表示法

  • 以0x或0X開頭的數字常量爲十六進制
  • 二進制-十六進制相互轉換
    ※一種特殊狀況
  • 要表示的數字常量x=2的n次方時,n=i+4j,且0≤i≤3時,開頭的十六進制數字爲1(i=0)、2(i=1)、4(i=2)、8(i=3),後面跟隨着j個十六進制的0。這裏的j是表明着每四位二進制位對應的十六進制位,而i的範圍是由於十六進制中每一位的範圍是0-F,最多能容納到8。html

    2、尋址和字節順序

    小端法和大端法
  • 小端法:最低有效字節在前面——「高對高,低對低」
  • 大端法:最高有效字節在前面
  • 以0x01234567爲例:
  • 最高有效位在最前,因此爲01 23 45 67
  • 小端法:
  • 最低有效位在最前,因此爲67 45 23 01git

    3、位運算

  • 經常使用運算符號:
  1. 與: &
  2. 或: |
  3. 非: ~
  4. 異或:^
  5. 位運算:位向量按位進行邏輯運算,結果還是位向量(區別於邏輯運算)安全

    4、邏輯運算

    邏輯運算符
  • 與:&&
  • 或:||
  • 非:!
  • 邏輯運算的計算結果:
  • 全部非零參數都表明TRUE,0參數表明FALSE
  • 邏輯運算和位運算的區別
  1. 只有當參數被限制爲0或1時,邏輯運算才與按位運算有相同的行爲。
  2. 若是對第一個參數求值就能肯定表達式的結果,邏輯運算符就不會對後面的參數求值。學習

    5、移位運算

  • 右移分爲邏輯右移和算術右移
  • 邏輯右移:
  • 在左端補k個0,多用於無符號數移位運算
  • 算術右移:
  • 在左端補k個最高有效位的值,多用於有符號數移位運算。編碼

    第二節 整數表示

    1、補碼編碼

  • 補碼的最高位是表示符號位,解釋爲負權,「權重」爲-2的(w-1)次方,即無符號表示中的權重的負數。符號位爲1,表示值爲負,符號位爲0,表示值爲非負
  • 補碼的範圍:-2^(w-1)~2^(w-1)-1,即|TMin|=|TMax|+1
    無符號數編碼(U)和補碼(T):UMax = 2 TMax + 1翻譯

    2、有符號數和無符號數的轉換

  • 有符號數換爲無符號數
  • 非負數——保持不變
    • 負數——加上2^w,轉換成大正數
  • 無符號數換爲有符號數
    以2的w-1次方爲界限:
    小於它——保持不變
    大於它——減去2^w,轉換爲負數值設計

    3、擴展

  • 零擴展
    多用於無符號數轉換爲一個更大的數據類型。
    只需在開頭加上0便可。
  • 符號擴展多用於補碼數字轉換
  • 最高有效位是什麼,就添加什麼。htm

    4、截斷

  • 將一個w位的數截斷爲k位數字時,就會丟棄高w-k位。
  • 對於無符號數來講,就至關於 mod 2的k次冪
  • 對於有符號數來講,先按照無符號數截斷,而後再轉化爲有符號數blog

    第三節 整數運算

  • 整數運算即mod 2^w。
  1. 補碼的非運算
    對於範圍在[-2^(w-1),2^(w-1))中的x,補碼的非運算有以下兩種狀況:
  • x=-2^(w-1)時,爲-2^(w-1);
  • x>-2^(w-1)時,爲-x;
  1. 求位級補碼非
  • 對每一位求補,再對結果+1
  • 設k爲最右面的1的位置,將k左邊的全部位取反。
  • 乘以常數
  1. 常數爲2的k次冪的時候
    直接左移k位便可。
  2. 常數不是2的整數次冪的時候
    將常數C表示爲2的幾個整數次冪的和,結合移位運算和加法運算。
  • 除以2的k次冪
  1. 無符號數——邏輯右移
    無符號數除以2的k次冪,就等同於對其邏輯右移k位。
  2. 補碼——算術右移
  • x≥0時,除以2的k次冪等價於將x算術右移k位
  • x<0時,先將x加上(2^k)-1,再算術右移k位資源

    第四節 浮點數

    1、二進制小數

  • 小數的二進制表示法只能表示那些可以被寫成x X (2^y)的數,其餘的值只能近似的表示。
  • 權重
  • 以小數點爲界:
    左邊第i位,權重爲2的i次冪
    右邊第i位,權重爲1/2的i次冪

    2、IEEE浮點表示

  • IEEE浮點標準:
  • 用V=(-1)^s X 2^E X M 來表示一個數:
  • 符號:s決定這個數是正仍是負。0的符號位特殊狀況處理。
  • 階碼:E對浮點數加權,權重是2的E次冪(可能爲負數)
  • 尾數:M是一個二進制小數,範圍爲1~2-ε或者0~1-ε(ε=1/2的n次冪)
  • 編碼規則:
  • 單獨符號位s編碼符號s,佔1位
  • k位的階碼字段exp編碼階碼E
  • n位小數字段frac編碼尾數M(同時須要依賴階碼字段的值是否爲0)
  • 兩種精度
  • 單精度(float),k=8位,n=23位,一共32位;
  • 雙精度(double),k=11位,n=52位,一共64位。
  • 三種被編碼狀況:
    規格化的、
    非規格化的、
    特殊值

    3、舍入

  1. 向偶舍入
    即:將數字向上或向下舍入,是的結果的最低有效數字爲偶數。
  • 能用於二進制小數。
  1. 向零舍入
    把整數向下舍入,負數向上舍入。
  2. 向下舍入
    正數和負數都向下舍入。
  3. 向上舍入
    正數和負數都向上舍入。
  • 向偶舍入能夠獲得最接近的匹配,其他三種可用於計算上界和下界

    4、浮點運算

  1. 浮點加法:
    浮點加法是可交換的、
    浮點加法不具結合性
  • 大多數值的浮點加法都有逆元,除了無窮和NaN。
  • 浮點加法知足單調性
  1. 浮點乘法:
    浮點乘法是可交換的、
    浮點乘法不具備結核性、
    浮點乘法的單位元爲1.0、
    浮點乘法在加法上不具有分配性、
    在必定條件下知足單調性、

代碼託管截圖

git.shiyanlou.com/20145337

感悟

  • 在這一章我學習了用各種方法來表示基本的數據類型,再操做這些數據。在學習中明白了編譯器如何將C程序翻譯成這樣的指令。在接下來學習的幾種實現處理的方法,幫助咱們更好的瞭解硬件資源是如何被用來執行的。

    學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 200/200 2/2 20/20
第二週 300/500 2/4 18/38
第三週 500/1000 3/7 22/60

參考資料

相關文章
相關標籤/搜索