C 計算機儲存補碼

2021-07-24 11:13:38 字數 743 閱讀 1485

includeint main()

printf("%d\n",j);

return

0;}

請問該程式的輸出是多少?

這題正著推不容易,可以考慮反著推

要想退出迴圈 最後必定是 i=0

根據選項

a: (0 + 2*3) % 256 = 6 不是7 , 所以a錯誤

c: (0 + 173*3) % 256 = 7 , 所以c可以

d: (0 + 172*3) % 256 = 4 不是7,所以d錯誤

b: 既然c可以,當然b就錯誤

分析:

unsigned char 8位資料位,範圍0-255

-2的原碼是1000 0010,反碼是1111 1101,補碼是1111 1110,計算機中儲存的是補碼

所以-2(11111110)時,溢位變成254;

同理-1(11111111)時,溢位變成255;

最後減到0時,不滿足迴圈條件,for停止。

剛好173次。

7 4 1 ==> 共(7-1)/3+1=3次(1-3=-2,即254,繼續迴圈)

254 251 … 5 2 ==> 共(254-2)/3+1=85次(2-3=-1,即255,繼續迴圈)

255 252 … 6 3 ==> 共(255-5)/3+1=85次(3-3=0,退出迴圈)

所以總共173次。

計算機補碼

1 可以將符號位與其他位統一處理,無須單獨設定符號處理線路。2 只使用加法器就可以實現加減運算。3 兩個用補碼表示的數相加時,如果最高位 符號位 有進製,則進製被捨棄。例 求 7的補碼表示。解1 7的補碼表示為00000111,按照轉換規則得出 7的補碼表示為11111001。解2 還有一種做法是根...

計算機補碼

名詞解釋 補碼 1 在計算機系統中,數值一律有補碼來表示 儲存 使用補碼,可以將符號位和其他位統一處理 同時,減法也可按加法來處理.另外,兩個用補碼表示的資料相加時候,如果最高位 符號位 有進製,則進違被捨棄.2 補碼與原碼的轉換過程幾乎是相同的 數值的補碼表示也分兩種情況 1 正數的補碼 與原碼相...

計算機補碼學習

補碼 按位取反,末位加一。很簡單,容易記,但是為什麼要這麼做?首先是補碼出現的原因。第一 簡化計算機的減法計算,避免出現借位的情況。以十進位制為例,如果要計算200 199,無可避免的要進行兩次借位,每一次借位,要儲存幾個資料,借了多少 借位後的資料是多少 被借的資料成了多少,這樣就需要很多原件來儲...