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,無可避免的要進行兩次借位,每一次借位,要儲存幾個資料,借了多少 借位後的資料是多少 被借的資料成了多少,這樣就需要很多原件來儲...