整數分成正整數跟負整數,
電腦中正整數以不帶號整數來表示: 例如一個正整數是一個位元組(8 bits)來表示,所以可以表示2^8 =256個數字(範圍從0~255)
負整數以帶號整數來表示: 最左邊的bit代表正負號(0為正,1為負), 有三種方式(1)帶號大小值法(Sign Magnitude), (2)1's 補數法(1's Complement), (3)2's補數法(2's Complement)
(1)帶號大小值法(Sign Magnitude):
就是只用最左邊的位元表示正負號, 如+3=00000011 則-3=10000011 只有最左邊的位元改變,其他不變. 這種直觀,方便,但是有三個問題,一是電腦內部的算術及邏輯單元必須同時具備加法和減法兩種運算電路,成本高,速度也慢. 二是同樣是0,但是會有00000000跟10000000兩種結果.三是二進位的表示無法直接相加. (+3+(-3)=0; 00000011+10000011=10000110)
(2)1's 補數法(1's Complement):
除了用最左邊的位元表示正負號,其他數字也必須變成1的補數(1+0=1, 所以1跟0互為補數). 如+3=00000011 則-3=10000000. 這樣還是會有同樣是0,但是會有0000跟1111兩種結果.
(2)2's 補數法(2's Complement):
除了用最左邊的位元表示正負號,其他數字也必須變成2的補數(先變成1的補數,然後最後一個位元再加上1). 這樣就可以解決上述的問題. 目前電腦就採用此表示法.
文章標籤
全站熱搜
