MartinYeung
MartinYeung

Love life Love IT IT blog: https://ithelp.ithome.com.tw/users/20119569

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。


CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…

发布评论