- 机器人Python青少年编程开发实例
- 史向东
- 1890字
- 2025-04-13 06:29:20
3.2.3 有趣的数字
至此,我们学习了显示文本(“Hello World!”)和数字。但不知道细心的你有没有发现,在显示数字的时候,数字都是用双引号引起来的,这是什么意思呢?其实在Python语言中,加了双引号的数字表示的是字符,如“5”并不是表示数字5,而是表示字符5。引号告诉计算机当前这个数字是字符。如果多个字符连接在一起,就形成了字符串,如“Hello World”“123456”。
>>>num="5" #表示字符5 >>>numb=5 #表示数字5 >>>first_str="i am first" #字符串
关于字符串我们会在后面的章节中进行讲述,这里先来看一下计算机中的数字。通常来说,数字包括0、1、2、3、4、5、6、7、8、9,以及由这些数字组成的组合,下面我们就来认识这些神奇的数字。
1.0是什么
0是什么?“今天的销售额为0”,这里的0表示什么也没有。0就是表示什么也没有吗?其实不然,在不同的使用场景下,0表示的意义有所不同。例如:
温度0℃并不是表示没有温度,而是表示比-1℃高,比1℃低。
“为增加收入,接点零活”,这里的零也不是表示没有活。
在电子技术中,0一般表示低电平,1一般表示高电平,在TurnipBit开发板中也是这样设置的。在逻辑运算中,0表示逻辑假(False),1表示逻辑真(True)。在Python语言程序设计中,未赋值的变量(详见第4章)为0;0的位置代表不同的数据类型,如10表示整数10,而1.0并不是指整数1,而是指浮点数1.0。
2.认识二进制
我们使用的是十进制形式,而计算机使用的却是二进制形式来保存数据和编写程序的。为什么计算机用二进制形式而不用十进制形式呢?用十进制形式不是更方便吗?
如果要让计算机用十进制形式来保存数据,那么首先需要计算机能够识别十进制里的0~9十个数字。怎么识别呢?通常来说,可以通过元器件的电压高低水平来进行衡量。例如,电路最高电压为12V,那么将10个数字均分到0~12V之间,每个数字的电压间隔为1.33V(如图3-10所示)。如此小的电压区间,要准确测量出电压,并标记为数字,是相对比较复杂的。

图3-10 电压分布图
相比来说,使用二进制形式就简单和方便得多,因为具有两种稳定状态的元器件很容易被找到,如晶体管的导通与截止、继电器的接通与断开,以及电脉冲的高低电平等。技术实现简单、运算规则简单、逻辑运算方便、易于转换等优势,是二进制形式在计算机中应用的主要原因。二进制计数与十进制类似,只有0和1两个数码,且满2进1。十进制数由个位、十位、百位、千位、万位等组成,二进制数则由1位、2位、4位、8位、16位、32位等组成(如表3-1所示)。
表3-1 进制位数表

3.二进制运算规则
与十进制相似,二进制运算也包括加、减、乘、除基本运算。具体方法如下。
(1)加法
二进制加法中加数和被加数只能为0或1,因此只有四种情况。
0+0=0 1+0=1 0+1=1 1+1=10 #进1位
根据加法交换律,第二种和第三种是一种情况,所以实际上二进制加法只有三种情况。多位数的二进制数相加也和十进制类似。例如:
101+1001=1110
用竖式表示,如图3-11所示。

图3-11 二进制加法竖式计算
(2)减法
减法的规则也很简单,只有四种情况。
0-0=0 1-0=1 1-1=0 0-1=1 #借1位当2
例如,计算1110减去1001:
1110-1001=101
用竖式表示,如图3-12所示。

图3-12 二进制减法竖式计算
(3)乘法
二进制乘法的规则如下:
0×0=0 1×0=0 1×1=1 0×1=0
多位数的二进制乘法就是在这个规则下进行的,如计算1001×101,其竖式表示如图3-13所示。从竖式来看,当乘数某位为0时,与被乘数相乘结果全为0;当乘数某位为1时,与被乘数相乘得到的是被乘数对应的各位,只是需要将被乘数向左移动相应的位数,于是二进制乘法就可以简单地转化为“加法与移位”。

图3-13 二进制乘法竖式计算
(4)除法
二进制除法除去0作为除数无意义外,只有两种情况。
0÷1=0 1÷1=1
多位数的二进制除法,如110011除以11,其竖式表示如图3-14所示。从竖式可以看出,二进制除法实际上就是“减法与移位”。

图3-14 二进制除法竖式计算
4.进制转换
(1)二进制转换为十进制
在二进制的计数规则中,从右到左依次为1位、2位、4位、8位……每位有不同的数字,即0或者1。每位的0或者1分别表示不同位的数字个数。比如二进制数110,右边的1位的0表示的是1的个数,2位的1表示的是2的个数,4位的1表示的是4的个数。于是110就变成了1×0+2×1+4×1=6。因为二进制的位数是2的幂次关系,所以二进制转换为十进制就可以用2的幂来计算,比如:

再比如:(2)十进制转换为二进制

与二进制转换为十进制相反,十进制转为二进制通常使用“除2取余、逆序排列”法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又得到一个商和余数,依次进行,直到商为0。将先得到的余数放在最右边作为最低位,后得到的依次放在左边作为高位,就得到了二进制结果。比如将上面的十进制数54转换为二进制形式,如图3-15所示。于是将54转换为110110。

图3-15 将十进制数54转换为二进制形式