確實跟補碼有關
計算機為了使減法變為加法把負數用補碼來儲存(正數也是隻不過正數的補碼與原碼相同)
以鐘錶為例
例如: 假設當前時針指向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
確實跟補碼有關
計算機為了使減法變為加法把負數用補碼來儲存(正數也是隻不過正數的補碼與原碼相同)
以鐘錶為例
例如: 假設當前時針指向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