1.3.2 二进制数
只包含两个符号的数字系统是以2为基数,或是二进制的。二进制系统仍然是位值系统,所以其基本机制与十进制系统相同,但是它也有一些变化。首先,每个位置的权重是2的幂,而不是10的幂。其次,每个位置只能是2个(而不是10个)符号中的一个,这两个符号就是0和1。图1-3举例说明了如何用二进制表示一个数。
图1-3中给出了一个二进制数:101。对你来说,这个数看起来可能挺像一百零一,但在二进制中,它实际表示的是5!如果你想口头表达出来,那么可以读作“二进制一零一”。
图1-3 用二进制位值记数法表示的十进制数5
就像十进制一样,每个位置都有一个等于基数各次幂的权重。当基数等于2时,最右边的位置是2的0次幂,值为1;下一个位置是2的1次幂,值为2;再下一个位置是2的2次幂,值为4。另外,和十进制相同的是,要得到总的数值,就要用每个位置上的符号乘以位值权重,然后再把结果加起来。所以,从右边开始,就有(1×1)+(0×2)+(1×4)=5。
现在,你可以自己尝试把二进制数转换成十进制数了。
练习1-2:将二进制转换成十进制
把下列用二进制表示的数转换成等价的十进制数。
10(二进制)=____(十进制)
111(二进制)=____(十进制)
1010(二进制)=____(十进制)
你可以通过附录A中的答案检查结果。你做对了吗?最后一小题可能有点棘手,因为它在左边多引入了一位,即8的位置。现在,尝试一下从十进制转换成二进制。
练习1-3:将十进制转换成二进制
把下列用十进制表示的数转换成等价的二进制数。
3(十进制)=____(二进制)
8(十进制)=____(二进制)
14(十进制)=____(二进制)
我希望这些题你也答对了!很快你就会发现同时处理十进制和二进制会造成混淆,因为一个像10这样的数,在十进制中表示的是10,在二进制中表示的是2。本书从现在开始,如果有混淆的苗头,那么二进制数将用0b开头。之所以选择0b作为前缀,是因为有几种编程语言采用了这种方法。前导字符0表示数字值,b是二进制(binary)的缩写。例如,0b10代表二进制的2,而10没有前缀,则代表十进制的10。