標籤:
資訊的表示和處理
一、資訊儲存。
1、數字表示
無符號編碼 基於二進位標記法
補碼編碼 有正有負
浮點數編碼
2.資訊儲存
在二進位標記法中,它的範圍是00000000(2)~11111111(2);如果用十進位表示就是0(10)~255(10);
十六進位的表示:0X或者Ox開頭的數字常量。)
字長:指明整數和指標資料的標稱大小。
字長決定的最重要的系統參數就是虛擬位址空間的最大大小。
定址和位元組順序:
通常,多位元組對象都被儲存為連續的位元組序列,對象地址為所使用位元組中最小的地址。
小端法----最低有效位元組在最前面的方式;
大端法----最高有效位元組在最前面的方式;
雙端法 許多微處理器使用
反組譯碼器:是一種確定可執行程式檔案所表示的指令序列的工具。
表示字串
C中字串被編碼為一個NULL(值為0)字元結尾的字元數組。每個字元都有某個標準編碼來表示。最常見的是ASCII碼。
最簡單的布爾代數二元集合{0,1}
位向量:有固定長度為w、有0和1組成的串。位向量運算可以定義成參數的每個對應元素之間的運算。集合編碼
位極運算:實現掩碼運算,這裡的掩碼是一個位元模式,表示從一個字中選出的位的集合。
確定一個位級運算式的結果的最好的方法,就是將十六進位的參數擴充到二進位表示並執行二進位運算,再轉換回十六進位。
邏輯運算
邏輯運算認為所有非零的參數都表示TRUE,而參數0表示FALSE.他們返回1或者0;按位元運算只有在特殊情況下,也就是參數被限制為0或者1時,
區別2: 如果對第一個參數求值,就能確定運算式的結果,那麼邏輯運算就不會對第二個參數求值。C語言標準並沒有明確定義應該使用哪種類型的右移,對於無符號資料,右移必須是邏輯的。對於有符號資料,算術的或者邏輯的右移都可以。實際上,幾乎所有的編譯器/機器組合都對有符號的資料使用算術右移,且許多程式員都假設機器會使用這種右移。
二、整數表示。
整數資料型別
用位來編碼整數的兩種方式:一種只能表示非負數,而另一種只能表示負數、零和正數。
整數資料類型——表示有限範圍的整數,每種類型都能用關鍵字來指定大小,而不同大小的分配位元組數會根據機器的字長和編譯器有所不同。
根據位元組分配,不同的大小所能表示的值的範圍是不同的。
無符號數編碼
有符號數和無符號數之間的轉換
轉換的原則是底層的位表示不變
零擴充——將一個無符號數轉換為一個更大的資料類型,表示在開頭加0。
符號擴充——將一個補碼數字轉換為一個更大的資料類型。
三、整數運算
無符號數加法
一個算術運算溢出,是指出完整的整數結果不能放到資料類型的字長限制中去。
乘以常數 無論是無符號運可能算還是補碼運算,乘以2的冪都會導致溢出。
四、浮點數
當一個數字不能被準確的表示為這種格式,就必須向上調整或者向下調整
二進位小數
第一步是考慮含有小數值的位元字。
IEEE浮點表示
符號 尾數 階碼
三種情況:規格化的值 非規劃的值 特殊值
舍入
浮點運算
感想小結:通過研究數位實際表示,理解可以表示的值得範圍和不同算術運算的屬性。瞭解這些屬性,使我對讓編寫的程式能在全部數值範圍內正確工作,而且具有可以跨越不同機器、作業系統和編譯器組合的移植性有了更深一步的理解。大量電腦的安全性漏洞都是猶豫電腦算術運算的微妙細節引發的,需要我們去進一步瞭解。
資訊安全系統設計基礎第4周學習總結