Unsigned and Signed Binary Numbers (二進位數字)
閱讀時間: 15分鐘
在programming language世界中,數字可以用不同的形式表達包括二進制(Binary)、十進制(Decimal)、十六進制(Hexadecima)等等
現在就為大家講解一下有關二進位數字的Unsigned興Signed的分別。
Unsigned就是沒有符號的意思,那就是Unsigned的數字不會有負數而是只有正數。
Signed就是有符號的意思,那就是Signed的數字會有負數和正數。
從上面的圖,可以看到Binary Number Representation可以分為2類分別是Unsigned Representation 和 Signed Representation。
而在Signed Representation之下,可以分成3類,分別是Sign-Magnitude form,
1’s complement form, 2’s complement form。
Unsigned Representation
沒有符號的表達方式就是指沒有負數,而最小的值就是0 (Zero)。
而這種表達方式是一不含糊的,因為每個數字都只是對應一個Binary Number。
假設是N bit的數字,它的範圍就是0 到(2n-1)。
例子1
用Unsigned Representation (Binary Number) 來表達十進位的數字 20。
(20)
= 10100
可以用5 bit來表達十進位的數字 20。
Sign-Magnitude form
會用第一個bit來表達正數或負數,
第一個bit是0就是正數,而第一個bit是1就是負數。
要注意,這一類的表達方式會出現2個0 (Zero),-0 (例子: 1 000) 及 +0(例子:0 000)。
第二個bit之後的表達方式興Binary Number表達方式一樣。
假設是N bit的數字,它的範圍就是-(2n-1)到(2n-1)。
例子2:
用Sign-Magnitude form (Binary Number) 來表達十進位的數字 20。
(20)
= 0 10100
用6 bit來表達十進位的數字 20。
(-20)
= 1 10100
用6 bit來表達十進位的數字 -20。
1’s complement form
會用第一個bit來表達正數或負數,
第一個bit是0就是正數,而第一個bit是1就是負數。
要注意,這一類的表達方式會出現2個0 (Zero),-0 (例子: 1 111) 及 +0(例子:0 000)。
假設是N bit的數字,它的範圍就是-(2n-1)到(2n-1)。
例子3:
用1’s complement form (Binary Number) 來表達十進位的數字 20。
(20)
= 0 10100
用6 bit來表達十進位的數字 20。
(-20)
= 1 01011
用6 bit來表達十進位的數字 -20。
2’s complement form
會用第一個bit來表達正數或負數,
第一個bit是0就是正數,而第一個bit是1就是負數。
要注意,這一類的表達方式只出現1個0 (Zero),0 (例子: 0 000)。
假設是N bit的數字,它的範圍就是-(2n)到(2n-1)。
例子4:
用2’s complement form (Binary Number) 來表達十進位的數字 20。
(20)
= 0 10100
用6 bit來表達十進位的數字 20。
(-20)
= 1 01011 + 1
= 1 01100
用6 bit來表達十進位的數字 -20。