【CSAPP】二、資訊的表示和處理

來源:互聯網
上載者:User

標籤:sig   font   分享   images   多位元組   src   操作   位元組   邏輯   

三種重要的數字表示:無符號 、 補碼 、 浮點數。

【一】資訊儲存

最小單位是位元組, 在作業系統層面,只需要關注地址。系統將儲存空間空間劃分為更可管理的單元,存放不同的程式對象(程式資料、指令、控制資訊)

1、16進位標記法:用兩個16進位字元表示一個位元組,00 - FF。 練習:16進位、10進位、2進位的相互轉換。

2、字: 字長決定虛擬位址空間的最大大小。32位電腦虛擬位址空間為 2^32個,即4GB

3、資料大小:整數short2/int4/long一字/longlong8,浮點數float4/double8, char1, char *一字

4、定址和位元組順序:多位元組對象的規則:地址+如何排列。

小端法:前面的地址存放小的位,後面的地址存放大的位、大端法相反

可能用到的情境:1、網路傳輸位元據。2、反組譯碼:從指令位元組級表示到組譯工具 3、強制類型轉換

5、表示字串:結尾為0x00(null, ascii碼為0),文本資料比位元據平台獨立性更好

6、表示代碼:二進位編碼不相容。

7、c中位元運算:~ | & ^,常見用法:自己與自己做異或,得到的是自身。掩碼運算。

8、c中邏輯運算:&& || !,

9、c中移位元運算:左移 << 右移:

邏輯右移:左端補0

算術右移:左端補最高位,

無符號資料是邏輯右移,有符號資料,算數右移。

 

【整數表示】

有符號數第一位是負的 2^(n-1),

有符號和無符號的切換:

 

c中有符號數和無符號數運算,有符號數自動轉換為無符號數!

這一點很坑,最好的解決方案是永遠不用無符號數。

擴充數位位表示:無符號零擴充,有符號符號擴充(類似邏輯右移)

 

【整數運算】

 1、無符號加法:

2、有符號加法:

3、補碼的非

4、無符號乘法

5、補碼乘法

高位不一致,低位是相同處理方式的。

6、乘以常數:乘法運算通常需要10個以上刻度,但是乘以常數可以通過移位和加法運算來代替。

例如:14 = 2 + 2^2 + 2^3,那麼x*14 = (x << 3) + (x << 2) + (x<<1)

7、除以2的冪:邏輯右移、算術右移 + 偏置(之後再看)

 

【浮點數】

IEEE標準

1、二進位小數:與十進位小數機制類似

2、IEEE浮點表示:sign + exp + frac:

exp: 無符號數 - 偏置量 (偏置量為 2^(k-1) -1 )

float: 1 + 8 + 23

double: 1 + 11 + 52

3、舍入與浮點運算(待填坑)

【CSAPP】二、資訊的表示和處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.