資訊安全系統設計基礎第三周學習總結-呂松鴻

來源:互聯網
上載者:User

標籤:

第2章 資訊的表示和處理

(一)、三種重要的數字表示

無符號數:編碼基於傳統的二進位標記法(大於或者等於零的數字)。

補碼:編碼是表示有符號整數的最常見方式(為正或者為負的數字)。

浮點數:編碼是表示實數的科學記號標記法的以二為基數的版本。

整數的表示雖然只能編碼一個相對較小的數值範圍,但是是精確的;而浮點數雖然可以編碼一個較大的數值範圍,但是這種表示是近似的表示。

大量的電腦安全性漏洞都是由於電腦運算的微妙細節引發的。

(二)、資訊儲存

電腦最小的可定址的儲存空間單位——位元組

一個位元組的範圍:00H-FFH

一、十六進位標記法1. C標記法

以0x或0X開頭的數字常量為十六進位

2. 進位轉換

常用進位:二進位(B),十進位(D),八進位(O或者Q),十六進位(H)

轉換為二進位-十六進位相互轉換,二進位的四位元字對應十六進位的一位元字。

同理,二進位與八進位的轉化是三位對應一位。

但是通常情況下,進位轉換都以二進位為橋樑進行轉換。

註:特殊情況

課本23頁有這樣一種情況,要表示的數字常量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。這是一種方便快捷的計算方法。

二、字

字長決定虛擬位址空間的最大大小。

字長為w,虛擬位址的範圍為1-(2^w-1)

w=32或64:也就是我們通常所說的電腦是32位還是64位。也可以理解為CPU一次處理資料的位元。

三、資料大小

在不同字長的電腦中,相同的資料類型所佔用的位元組數並不相同,32位和64位的區別參見教材26頁表格。

gcc -m32 可以在64位機上產生32位的代碼
四、定址和位元組順序1.小端法和大端法
  • 小端法:最低有效位元組在前面——“高對高,低對低”
  • 大端法:最高有效位元組在前面2.強制類型轉換
  • typedef:命名資料類型
  • sizeof():傳回型別的位元組數(好處?便於移植——32位和64位的區別)

 

五、表示字串

c語言中字串被編碼成為一個以null(值為0)字元結尾的字元數組

命令man ascii:得到ASCII字元碼錶

 

六、表示代碼

二進位代碼在不同的作業系統上有不同的編碼規則。所以二進位代碼是不相容的

 

七、布爾代數

1.最簡單布爾代數:與& 或| 非~ 異或^(結果為0或1)

2.擴充的布爾運算:位向量的運算(結果仍是位向量)

位向量的應用:表示有限集合,對集合編碼

 

八、位級運算

1.將位向量按位進行邏輯運算,結果仍是位向量

2.掩碼運算

掩碼:用來選擇性的屏蔽訊號,是一個位元模式,表示從一個字中選出的位的集合。

用位向量給集合編碼,通過指定掩碼來有選擇的屏蔽或者不屏蔽一些訊號,某一位位置上為1時,表明訊號i是有效;0表示該訊號被屏蔽。這個掩碼就表示有效訊號的集合。

0xFF:屏蔽除最低有效位元組之外的所有位元組。

~0:產生全1的掩碼

 

九、邏輯運算

1.邏輯運算子:與&&  或||  非!

2.計算方法:所有非零參數都代表TRUE,0參數代表FALSE。1代表TRUE,0代表FALSE

  • 只有當參數被限制為0或1時,邏輯運算才與按位元運算有相同的行為。
  • 如果對第一個參數求值就能確定運算式的結果,邏輯運算子就不會對後面的參數求值。

 

十、移位元運算

1.左移<<

2.右移>>

邏輯右移:在左端補k個0,多用於無符號數移位元運算

算術右移:在左端補k個最高有效位的值,多用於有符號數移位元運算。

  • Java中用>>表示算術右移,用>>>表示邏輯右移
  • 移位元運算優先順序小於算術運算
(三)、 整數表示一、整數資料型別

整數資料型別——表示有限範圍的整數,每種類型都能用關鍵字來指定大小,還可以指定是非負數(unsigned)還是負數(預設)。這些不同大小的分配的字數會根據機器的字長和編譯器有所不同。

關於取值範圍

  • 32位機器和64位機器對於同一資料類型的典型取值範圍是有所不同的。
  • 典型取值範圍中,取值範圍不對稱——負數的範圍比整數的範圍大1。
  • c語言標準定義的每種資料類型必須能夠表示的最小的取值範圍中,正數和負數的取值範圍是對稱的。

具體範圍見書38頁。

要用C99中的“long long”類型,編譯是要用 gcc -std=c99
二、無符號數的編碼

編碼方法見書,已經在很多門課程中都學習過了。

需要注意的是無符號數的二進位表示的一個重要性質:

0-(2^w)-1中的每一個整數和長度為w的位向量是一一對應的。

三、補碼編碼——有符號數的編碼

關於補碼,一些可能沒有注意過的知識:

  • 我們都知道補碼的最高位是表示符號位,解釋為負權,“權重”為-2的(w-1)次方,即無符號表示中的權重的負數。符號位為1,表示值為負,符號位為0,表示值為非負(不是正,因為有0)
  • 補碼的映射關係同樣是一一對應的
  • 補碼的範圍:-2^(w-1)~2^(w-1)-1,即|TMin|=|TMax|+1——因為非負數中0的存在。
  • 無符號數編碼(U)和補碼(T):UMax = 2 TMax + 1
  • 大多數情況下用補碼來表示有符號數,並且具有的是典型的取值範圍。

有符號數的其他表示方法:

  • 原碼
  • 反碼
四、有符號數和無符號數的轉換1.強制類型轉換

從位級角度考慮。

強制類型轉換的結果保持位值不變,只是改變瞭解釋這些位的方式。即:這些位上的值不變,但是由於最高有效位的權重發生變化,從而導致結果發生改變。

2.c語言中的有符號數和無符號數及其轉換轉換原則:底層的位保持不變。(1)有符號數→無符號數
  • 非負數——保持不變
  • 負數——轉換成大正數

    (2)無符號數→有符號數

    以2的w-1次方為界限:

  • 小於它——保持不變
  • 大於它——轉換為負數值

六、擴充一個數位位表示

擴充:從一個較小的資料類型轉換為較大的資料類型,同時保持數值不變。

1.零擴充:在開頭加上0。多用於無符號數轉換為一個更大的資料類型。

2.符號擴充:添加最高有效位的副本。多用於補碼數字轉換

 

七、截斷

截斷:減少表示一個數位位元。而這麼做可能會改變它的值,這也是溢出的一種形式。

將一個w位的數截斷為k位元字時,就會丟棄高w-k位。

  • 對於無符號數來說,就相當於 mod 2的k次冪
  • 對於有符號數來說,先按照無符號數截斷,然後再轉化為有符號數
(四)、 浮點數

浮點表示對形如V=x X (2^y)的有理數進行編碼,適用於:

非常大的數字非常接近於0的數字作為實數運算的近似值
一、二進位小數

小數的二進位標記法只能表示那些能夠被寫成x X (2^y)的數,其他的值只能近似的表示。

權重

以小數點為界:

左邊第i位,權重為2的i次冪右邊第i位,權重為1/2的i次冪
二、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編碼階碼En位小數欄位frac編碼尾數M(同時需要依賴階碼欄位的值是否為0)
兩種精度
  • 單精確度(float),k=8位,n=23位,一共32位;
  • 雙精確度(double),k=11位,n=52位,一共64位。
1.規格化的值

即exp的位元模式既不全0也不全1的時候,這是最一般最普遍的情況,因而是規格化的。

2.非規格化的值

即階碼域全為0時的數。

3.特殊值

特殊值是在階碼位全為1的時候出現的。分為兩種情況:

(1)無窮

小數欄位全為0

(2)NaN不是一個數

小數欄位非0

三、舍入

舍入運算:找到和數值x最接近的匹配值x‘,可以用期望的浮點形式表示出來。

IEEE浮點格式定義了四種不同的舍入方法:

1.向偶舍入(預設方法)

即:將數字向上或向下舍入,是的結果的最低有效數字為偶數。

能用於二進位小數。

2.向零舍入

即:把整數向下舍入,負數向上舍入。

3.向下舍入

正數和負數都向下舍入。

4.向上舍入

正數和負數都向上舍入。

四、浮點運算1.浮點加法
  • 浮點加法是可交換的
  • 浮點加法不具結合性
  • 大多數值的浮點加法都有逆元,除了無窮和NaN。
  • 浮點加法滿足單調性
2.浮點乘法
  • 浮點乘法是可交換的
  • 浮點乘法不具有結核性
  • 浮點乘法的單位元為1.0
  • 浮點乘法在加法上不具備分配性
五、c語言中的浮點數

int、float、double相互轉換?

int → float 不會溢出但有可能舍入int/float → double 結果保留精確數值double → float 可能溢出為±∞,由於精確度較小也有可能被舍入float/double → int 向零舍入,可能溢出。

資訊安全系統設計基礎第三周學習總結-呂松鴻

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.