教小白精通编程系列之“Python程序设计基础与实践”.未经作者同意,不得转载,违者将追究法律责任!
欢迎关注
微博:教小白精编程
1.3 数Number的表示
在python程序中,数的表示方式有多种,如果你熟悉二进制、十六进制,可以直接忽略本段内容。
日常生活中,通常采用的是“十进制(Decimal)”,即用10个不同的数字0,1,2,…9表示表一个数的大小,对于小于等于10的数字可以直接用这10个不同的数字的一个来表示或区分就可以了,即一位数字就可以表示不超过10的数,但如果一个数超过10,我们就需要用2位数字、3位数字、….等多位数字来表示,即“缝十进1”的多位数表示.比如一个整数329意思是“3个100”加上“2个10”加上“1个9”,即:
\[329 = 3\times 100+2\times 10+9=3\times 10^2+2\times 10^1+9\times 10^0\]但在计算机中,由于计算机硬件即晶体管只有“开”和“关”两种,也就是在说1个晶体管开关只能区分2种不同情况,相当于只能表示0和1两个数字。如果表示更大的数字? 和十进制一样,我们可以采用“缝二进1”的方法,即采用多个晶体管即多个0和1的排列来表示一个很大的数字。这种用2个数字0和1表示数的方法就称为“二进制”表示法。例如二进制数字1011表示的数 \(1011 = 1\times 2^3+0\times 2^2 +1\times 2^1 +1 \times 2^0 = 1\times 8+ 0\times 4+1\times 2+1\times 0 = 11\)
即相当于十进制数11.
下表是用8位二进制位(0,1)表示的数对应的十进制数。1个二进制位经常也称为1个比特(bit),而8个二进制位经常也称为1个字节(byte)。
使用前7个二进制位可以表示0到127共128个不同数字,使用全部8位二进制位可以表示一共256即$2^8$个不同的数。如果有n位二进制位可以表示$2^n$个不同的数,例如正整数0到$2^n-1$
十六进制
当你处理更大的二进制数的时候,二进制会有些问题,二进制位太多了,不方便,比如
1111 0101 1011 1001 1110 0001
如果表示成十进制数16103905,则只要8位.然而十进制数在某些情况下不方便,比如你希望将从右往左的第17个二进制位设置成1,就很难用十进制做到这点!一个解决方案是采用“十六进制”,即用十六个不同的十六进制数字来表示,即用0,1,2,…9,A(a),B(b),C(c),D(d),E(e),F(f)。即十进制的10个数字0,1,2…9加上英文字母的前6个字母。下表是十六进制、十进制和二进制之间的对应关系。
因为一个十六进制数字对应4个二进制数字,所以你可以将任何二进制数按照4个一组的方式以十六进制形式表示。如
1111 0101 1011 1001 1110 0001
对应的十六进制表示法,很简单的可以写出来
F 5 B 9 E 1
你也可以对这种十六进制数,可以很容易设置其对应二进制的第17位为1(思考一下?)
你也可以很容易的将十六进制采用如下方式计算出对应的十进制的值:
\[F\times 16^5+5\times 16^4+B\times 16^3+9\times 16^2+E\times 16^1+1\times 16^0\]您的打赏是对我最大的鼓励!