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

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

學習內容總結 模式 tle 應用 科學計數 強制類型轉換 相互轉換 進度 思考

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

教材學習內容總結

信息=位+上下文

  • 無符號編碼:基於傳統的二進制表示法,表示大於等於零的數字
  • 補碼編碼:表示有符號數證書最常見的方式,可表示或正或負的數字
  • 浮點數編碼:表示實數的科學計數法的以二為基數的版本
  • 溢出:計算機的表示法是用有限數量的位來對一個數字編碼,當結果太大以至不能表示時,某些運算就會溢出

    信息的存儲

  • 1個字節為8位,大多數計算機將1個字節作為最小的可尋址的存儲器單位。
  • 機器級程序將存儲器視為一個非常大的字節數組,稱為虛擬存儲器。存儲器的每個字節都由一個唯一的數字來標識,稱為地址。所有地址的集合稱為地址空間。

  • 字長:指明證書和指針數據的標稱大小。決定最重要的系統參數就是虛擬地址空間的最大大小。對於一個w位的機器而言,虛擬地址的範圍為0~2^w-1,程序最多訪問2^w個字節。

    字節排列規則

  • 小端法(little endian):最低有效字節排列在最前面
  • 大端法 (big endian):最高有效字節排列在最前面
  • 網絡應用程序的代碼編寫必須遵守已建立的關於字節順序的規則,以確保發送方機器將它的內部表示轉換成網絡的標準,而接收方機器則將網絡標準轉換為它的內部表示。

    字符串

  • C語言中的字符串被編碼為一個以null(其值為0)字符結尾的字符數組。每個字符都由某個標準編碼來表示,最常見的是ASCII字符碼。
  • 不同的機器類型使用不同的且不兼容的指令和編碼方式。即使處理器完全一樣,但是運行不同操作系統,也會有不同的編碼規則,因此二進制代碼是不兼容的。

    十進制( Decimal)與R進制的轉換

  • R個基本符號(0,1,2.R-1)
  • R稱為基數(base),它代表每個數位上可以使用的不同數字符號個數。R稱為第位上的權
  • 逢R進一

    二進制與八進制/十六進制的轉換

  • 二進制轉化為八進制:從低位開始,三位二進制碼表示的十進制數作為一位八進制碼,高位不足時補0。
  • 二進制轉化為十六進制:從低位開始,四位二進制碼表示的十進制數作為一位十六進制碼,高位不足時補0。
  • 八進制/十六進制轉化為二進制時,只需要將每一位八進制碼/十六進制碼還原為三位/四位二進制碼即可。

    位級運算

  • 位向量:固定長度位w、由0和1組成的串
  • 位的高低:從左到右,從高到低
  • 運算:
    &(按位與)
    | (按位或)
    ~(按位取反)
    ^(按位異或)

    邏輯運算

    &&(邏輯與)
    ||(邏輯或)
    !(邏輯非)
  • 非零參數都表示TRUE,0表示FALSE

    移位運算
  • 邏輯右移:右移N位,就在高位補N個0
  • 算術右移:右移N位,就補N個最高位的值

    有符號數與無符號數之間的轉換

  • 處理同樣字長的有符號數與無符號數之間相互轉換的一般規則:數值可能會改變,但是位模式不變。
    (1)有符號數→無符號數
    非負數——保持不變

負數——轉換成大正數
(2)無符號數→有符號數
以2^*(w-1)為界限:

小於它——保持不變

大於它——轉換為負數值
[0,2(w-1))範圍內的數字,無符號和補碼表示相同;範圍之外的,需要加上或者減去2w

運算時若同時存在有符號數和無符號數,會隱式的將有符號數強制類型轉換為無符號數,並且假設這兩個數都是非負的。

無符號數運算

  • 加法:
    技術分享圖片

  • 乘法:
    技術分享圖片

  • 除法:向下取整

    補碼運算

  • 加法:
    技術分享圖片

  • 乘法:
    技術分享圖片

  • 除法:算術右移

技術分享圖片

浮點數運算

IEEE浮點表示:V=(-1)s x M x 2E(符號 s,尾數 M,階碼 E)
向偶舍入(默認):將數字向上或向下舍入,是的結果的最低有效數字為偶數。能用於二進制小數。
向零舍入:把整數向下舍入,負數向上舍入。
向下舍入:正數和負數都向下舍入。
向上舍入:正數和負數都向上舍入。

代碼托管

其他(感悟、思考等,可選)

本周主要是理論知識的學習,進一步了解C中信息的存儲、轉換和運算規則。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一周 80/80 1/1 5/5
第二周 0/80 1/2 4/9
  • 計劃學習時間:9小時

  • 實際學習時間:4小時

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