回覆列表
  • 1 # 使用者6847486145697

    確實跟補碼有關

    計算機為了使減法變為加法把負數用補碼來儲存(正數也是隻不過正數的補碼與原碼相同)

    以鐘錶為例

    例如: 假設當前時針指向10點,而準確時間是6點,調整時間可有以下兩種撥法:

    一種是倒撥4小時,即:10-4=6

    另一種是順撥8小時:10+8=12+6=6

    計算機內部計算類似於上面 它把(-4)變成儲存為12-4=8(即所謂的補碼)

    而計算機計算10-4時它就變成10+8=18 而鐘錶最大值為12所以18-12=6 於是計算就完成了

    (1)正數的補碼:與原碼相同(因為它本身是加數計算機可以計算所以不用變)。

    例如,+9的補碼是00001001。

    (2)負數的補碼:符號位為1,其餘位為該數絕對值的原碼按位取反;然後整個數加1。(因為它不是是加數計算機不可以計算 所以要變成補碼)

    例如,-7的補碼:因為是負數,則符號位為“1”,整個為10000111;其餘7位為-7的絕對值+7的原碼

    0000111按位取反為1111000;再加1,所以-7的補碼是11111001。簡單點就是10000000( 128)-0000111(7)=11111001(121)

    而C語言中有符號的整數為16位從00000000,00000000 到011111111,11111111 即0到32767為正數所以補碼為原碼

    從11111111,11111111 到10000000,00000000

    為-1到-32768

  • 中秋節和大豐收的關聯?
  • 什麼魚什麼什麼四字成語?