阅读时间: 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。