2018-2019-1 20165228 《信息安全系統設計基礎》第二周學習總結
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 《信息安全系統設計基礎》第二周學習總結