深入理解計算機系統[習題]_第二章_信息的表示和處理

在這裏插入圖片描述
[可以看到這個練習中,從 [ 1011 ] 擴展到 [ 11011 ] 再擴展到 [ 111011 ] ,它們都是 -5 的補碼錶示。可見有符號數位擴展時候,左邊擴展符號位,不會對它的數值有影響。]
[而且也驗證了,對於無符號數來說,每一個數只有一種位向量表示,而對於有符號數(補碼錶示),同樣都是-5,就有很多種表示,甚至是無限種,只要擴展符號位就可以。 -2019/5/6]
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
A: 當 s 比 t 短的時候,該函數會返回1
B:由於 strlen 被定義爲產生一個無符號的結果,差和比較都採用無符號運算來計算。當 s 比 t 短的時候,strlen(s) - strlen(t)的差會爲負,但是變成了一個很大的無符號數,大於0。
C:改爲 return strlen(s) > strlen(t);

[ 舉個負數變成了很大的無符號數的例子: 3 - 4 ===> [0011] - [0100] = [1111] ,這個[1111] 視爲有符號數(補碼),則爲-1,結果正確了;視爲無符號數,則爲15,結果就錯了。]

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