CSAPP 第2章 練習題2 1 2 6

2021-09-14 07:40:35 字數 2381 閱讀 9033

練習題2.1 完成下面的數字轉換:

a. 將0x39a7f8轉換位二進位制

b. 將二進位制1100100101111011轉換為十六進製制

c. 將0xd5e4c轉換二進位制

d. 將二進位制1001101110011110110101轉換為十六進製制

解: a. 0011-1001-1010-0111-1111-1000         b. 0xc97b

c. 1101-0101-1110-0100-1100                  d. 0x26e7b5

練習題2.2 填寫下表中的空白項,給出2的不同次冪的二進位制和十六進製制表示:

練習題2.3 乙個位元組可以用兩個十六進製制數來表示。填寫下表中缺失的項,給出不同位元組模式的十進位制,二進位制和十六進製制值:

解:

練習題2.4 不將數字轉換為十進位制或者二進位制,試著解答下面的算術題,答案要用十六進製制表示。

a. 0x503c + 0x8 =  ______________

b. 0x503c - 0x40 = ______________

c. 0x503c + 64    = ______________

d. 0x50ea - 0x503c = ____________

解:a. 0x5044       b. 0x4f9c     c. 0x507c          d. 0xaf

練習題2.5 思考下面對show_bytes的三次呼叫:

int val = 0x87654321;

byte_pointer valp = (byte_pointer) &val;

show_bytes(valp, 1); // a.

show_bytes(valp, 2); // b.

show_bytes(valp, 3); // c.

指出在小端法機器和大端法機器上,每次呼叫的輸出值。

a.  小端法:________       大端法:________

b.  小端法:________       大端法:________

c.  小端法:________       大端法:________

解:a. 小端法:21                大端法:87

b. 小端法:21 43           大端法:87 65

c. 小端法:21 43 65      大端法:87 65 43

這是基於qemu模擬器的實現

練習題2.6 使用show_int和show_float,我們確定整數3510593的十六進製制表示為0x00359141,而浮點數3510593.0的十六進製制表示為0x4a564504。

a. 寫出這兩個十六進製制值的二進位制表示。

b. 移動這兩個二進位制串的相對位置,使得它們匹配的位數最多。有多少位相匹配呢?

c. 串中的什麼部分不相匹配?

解:a.   0x00359141       0000 0000 0011 0101 1001 0001 0100 0001

0x4a56504        0100 1010 0101 0110 0100 0101 0000 0100

b.  0000 0000 0011 0101 1001 0001 0100 0001

0100 1010 0  1 0101 1001 0001 0100 0001  00

共有21位相匹配

c.  我們發現除了最高有效位1,整數的所有位都嵌在浮點數中。這正好也是書中示例的情況。另外,浮點數有一些非零的高位不與整數中的高位相匹配

練習題2.7 下面對show_bytes的呼叫將輸出什麼結果?

const char *s = "abcdef";

show_bytes((byte_pointer) s, strlens(s));

注意字母 『a' ~ 'z' 的ascii碼為0x61~0x7a

解:輸出 61 62 63 64 65 66(庫函式strlen不計算終止的空白符,所以show_bytes只列印到字元 』f' )

第2章 練習題

2.9 a 不合法,變數要在輸入前定義 b 不合法,存在丟失資訊的風險 c 不合法,wage未定義 d 會被轉換為整型 2.10 global str 空字串 global int 0 local int 垃圾值 local str 垃圾值 2.11 a 宣告 定義 b 宣告 定義 c 宣告 2.1...

Leaning perl 第2章練習題答案

原文發表在網易部落格 2010 11 04 21 18 43 開始學習perl了,得多做題啊.2.1 2.3 計算圓半徑計算 perl w pi 3.141592654 print enter the semidiameter semidiameter chomp semidiameter if s...

第3章練習題

1 在這一章中,所謂的過濾是什麼意思?有什麼意義?過濾是指下層驅動程式和上層軟體之間的過濾層,在上下層進行資料交換時進行掃瞄過濾的過程 2 何為核心物件?我們已經接觸到了哪幾種核心物件?核心物件是核心中的一塊記憶體,是一種資料結構,負責維護該物件的資訊。裝置物件,驅動物件,進執行緒物件 3 何為裝置...