深入理解計算機系統(二)---程序結構和執行

信息的表示和處理:

1. C語言中一個指針的指都是某個存儲塊的第一個字節的虛擬地址。

2. 字長決定虛擬地址空間的最大大小。

3. 最低有效字節在前面的方式------------小端法(如Intel)。 最高有效字節在前面的方式------------------大端法(如IBM、Sun Micro)。

4. 爲了避免在網絡傳輸數據時,不同機器字節順序不同,網絡應用程序的代碼編寫必須遵守已建立的關於字節順序的規則。

5. Linux 32, windows, Linux 64 是小端機器, Sun 是大端機器。

6.十進制數字X的ASCII碼正好是0x3x,終止字節的十六進制表示0x00.

7. Unicode編碼用32位來表示字符。UTF-8 表示將每個字符編碼爲一個字符序列, 這樣標準ASCII 字符還是使用和它們在ASCII中一樣的單字節編碼。 Java編程語言使用Unicode來表示字符串(c語言也支持)。

8. 即使處理器完全一樣,但是運行不同的操作系統,也會有不同的編碼規則,因此二進制代碼是不兼容的。

9. a^a = 0, (a^b)^a = b.

10. 邏輯運算與位級運算。

11. &&和|| 與 & 和| 區別在於 前者如果對第一個參數確定求值就能確定表達式結果,那麼不會對第二個參數求值。 a&&5/a 不會造成被零除。

12. 移位運算:左移右邊補0. 右移分爲邏輯右移和算術右移。 邏輯右移左端補0, 算術右移左端補最高有效位。

13. java 對於如何右移有明確的定義。 x>>k 算術右移。 x>>>k 邏輯右移。

14. 對於w位的數據結構,移動w位(k>=w),實際上位移量爲k mod w。

15. c/c++ :支持有符號數和無符號, java:只支持有符號數。

16. c語言標準並沒有規定用補碼錶示有符號整數。(<limits.h> 中有常量限定了不同整型數據類型的取值範圍)

17. 反彙編器是一種將可執行程序文件轉換回可讀性更好的ASCII碼形式的程序。

18. 符號擴展人以爲都保持原來的值。 short轉換成unsighed時,先改變大小,之後在改變符號。

19. IEEE 浮點表示。符號,尾數,階碼。C語言float(s,exp,frac分別爲1位,8位,23位),double(s,exp,frac分別爲1,11,52)

1. 規格化數

當 exp不全爲零,或者不全爲1,32位的偏值位127,對小數字段frac:0<= f<1,尾數定義爲:M = 1 + f。

2. 非規格化

exp全爲零,階碼值E=1 - Bias , 尾數: M = f .

3. 特殊

exp 全爲1, f 全爲0, 去窮大。

exp 全爲1, f 不全爲0, NaN

20. 向偶數舍入法能夠運用於二進制小數,對於形如XX...YY100...的二進制位模式,這種舍入方式纔有效,其中X和Y表示任意位值,最右邊Y是要舍入的位置。只有這種模式表示在兩個可能的結果正中間的值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章