零基础学Python程序设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.2 数字类型——整数

Python中的整数(Integer)与数学中的整数概念一致。人们生活中常用到的数字,如-2、-1、0、1、2等这样的数都称为整数。整数常常用来计数,如记录成绩的分数、网站的访问量等。在Python中,使用数字类型表示这些记录的数值(分数、访问量)。Python提供了三种数字类型,分别是整数类型、浮点数类型、复数类型。本节首先讲解整数类型。

3.2.1 十进制整数

在Python中,依据进制的不同,整数的表示形式有多种。进制分为二进制、八进制、十进制、十六进制。因此,整数类型包括二进制整数、八进制整数、十进制整数、十六进制整数。下面首先介绍十进制整数的表示形式。

十进制是日常生活使用的进制类型,如人们算数采用的就是十进制。十进制由数字0~9构成,基数为10,进位规则是“逢十进一”。在Python中,进制之间的运算结果默认是以十进制表示的,但不能以0开始,如图3.3所示。

图3.3 十进制表示

【实例3-1】书写有效的十进制整数,并通过输出进行验证。

(1)书写的十进制整数如下:

(2)在交互模式中,输入并执行这些十进制整数后查看结果,具体内容如下:

输出结果与编写的十进制整数完全一样。

3.2.2 二进制整数

二进制整数的表现形式是以0b或0B开始的。它们由数字0和1组成,基数为2,进位规则是“逢二进一”。二进制表示如图3.4所示。

图3.4 二进制表示

【实例3-2】书写有效的二进制整数,并通过输出进行验证。

(1)书写的二进制整数如下:

(2)在交互模式中,输入并执行这些二进制整数后查看结果,具体内容如下:

输出结果显示了这些二进制整数对应的十进制整数形式。这也说明了编写的二进制整数是有效的,也再次说明了默认是以十进制整数显示的。

助记:二进制整数以0b开始,这里的b取自于二进制对应的英文单词binary中的首字母,该单词发音语法为[baɪnəri]。

1. 二进制整数转换为十进制整数

上述实例中的执行结果,是二进制整数自动转换为十进制整数。我们也可以使用权相加法,手动计算二进制整数如何转换为十进制整数。

例如,二进制整数0b1011010转换为十进制整数,转换方法如图3.5所示。

图3.5 二进制整数转换十进制整数的方法

2. 十进制整数转换为二进制整数

十进制整数转换为二进制整数采用“除2取余,逆序排列”的方法。具体步骤是:用2整除十进制整数,可以得到一个商和余数,商写在下面,余数写在商的右边;再用2去除商,又会得到一个商和余数,商写在下面,余数写在商的右边;以此类推,除到商为0时,就不用往下除了。这个时候将余数从下到上排列出来,得到的数就是二进制整数。

例如,将十进制整数29转换为二进制整数,转换方法如图3.6所示。

图3.6 十进制整数转换二进制整数的方法

3.2.3 八进制整数

八进制整数的表现形式是以0o(第一位为数字0,第二位为小写字母o)或0O(第一位为数字0,第二位为大写字母O))开始的。它们由字符0到7来组成,基数为8,进位规则是“逢八进一”。八进制表示如图3.7所示。

图3.7 八进制表示

【实例3-3】书写有效的八进制整数,并通过输出进行验证。

(1)书写八进制整数如下:

(2)在交互模式中,输入并执行这些八进制整数后查看结果,具体内容如下:

输出结果为八进制整数对应的十进制整数形式。

助记:八进制整数以0o开始。这里的o取自于八进制对应的英文单词octal中的首字母,该单词发音语法为[ɒktl]。

在程序开发中,经常需要把二进制整数和八进制整数进行互相转换。下面详细讲解这两种进制的转换方式。

1. 二进制整数转换为八进制整数

二进制整数转八进制整数是将二进制整数从右往左,每3位二进制整数合并为一组;将其转换为八进制整数作为其中的一位;最后,将所有的八进制整数按顺序连在一起。

二进制整数0b111101001转换为八进制整数,转换方法如图3.8所示。图中的二进制整数是9位,进行合并时正好每3位合并为1组。转换为的八进制整数为751,在Python中写为0o751。

图3.8 二进制整数转换八进制整数的方法(无须补齐)

当二进制整数的位数不是3的倍数,每3位二进制整数进行合并时,会导致有些位数不足3位,这就需要使用0进行补齐。例如,7位二进制整数0b1011100转换为八进制整数,转换方法如图3.9所示。图中转换为的八进制为134,在Python中书写为0o134。

图3.9 二进制整数转八进制整数(需要补齐)

2. 八进制整数转换为二进制整数

八进制整数转二进制整数是将八进制整数的每一位都转换为3位二进制整数,最后将其连在一起就成了最终的二进制整数。八进制整数647转换为二进制整数,转换方法如图3.10所示。该图中转换为的二进制整数为110100111,在Python中写为0b110100111。

图3.10 八进制整数转二进制整数转换方法(无须补齐)

往往八进制整数中的每一位不可能都正好转换为3位的二进制整数,对于不足3位的二进制整数需要向左使用0进行补齐。例如,八进制整数0o315转换为二进制整数,如图3.11所示。图中转换为的二进制整数为011001101,在Python中书写为0b11001101。

图3.11 八进制整数转换二进制整数的方法(需要补齐)

为了方便用户能够快速进行转换,这里提供了二进制整数与八进制整数之间的转换关系对照表,如表3-1所示。

表3.1 二进制整数与八进制整数之间的转换关系

3.2.4 十六进制整数

十六进制整数的表现形式是以0x(第一位为数字0,第二位为小写字母x)或0X(第一位为数字0,第二位为大写字母X)开始的。它们由数字0~9和字母a(A)到f(F)组成,基数为16,进位规则是“逢十六进一”。十六进制表示如图3.12所示。

图3.12 十六进制表示

【实例3-4】书写有效的十六进制整数,并通过输出进行验证。

(1)书写八进制整数如下:

(2)在交互模式中,输入并执行这些十六进制整数后查看结果,如下:

输出结果为十六进制整数对应的十进制整数形式。

助记:十六进制整数以0x开始。这里的x取自于十六进制对应的英文单词hexadecimal中的第三个字母,该单词发音语法为[heksəˈdesɪml]。

1. 二进制整数转换为十六进制整数

二进制整数转十六进制整数是将二进制整数从右往左,每4位二进制整数合并为一组,将其转换为十六进制整数作为其中的一位。最后将所有的十六进制整数按顺序连在一起得到最终的十六进制整数。

二进制整数0b101011001110转换为十六进制整数,转换方法如图3.13所示。图中的二进制数是12位,进行合并时正好每4位合并为1组。转换为的十六进制整数为ACE,在Python中书写为0xACE。

图3.13 二进制整数转十六进制整数转换方法(无须补齐)

当二进制整数的位数不是4的倍数,每4位二进制整数进行合并时,会导致有些位数不足4位,这时就需要使用0进行补齐。例如,10位二进制整数0b1011001101转换为十六进制整数,转换方法如图3.14所示。图中转换为的十六进制整数为2CD,在Python中书写为0x2CD。

图3.14 二进制整数转十六进制整数转换方法(需要补齐)

2. 十六进制整数转换为二进制整数

十六进制整数转二进制整数,将十六进制整数中的每一位转换为二进制整数,然后按顺序组合起来就是最终的二进制整数。

十六进制整数0xF2转换为二进制整数,转换方法如图3.15所示。图中转换为的二进制为11110010,在Python中书写为0b11110010。

图3.15 十六进制整数转二进制整数转换方法(无须补齐)

往往十六进制整数中的每一位不可能都能正好转换为4位的二进制整数,对于不足4位的二进制整数需要向左使用0进行补齐。例如,八进制整数0x258转换为二进制整数,如图3.16所示。图中转换为的二进制整数为001001011000,在Python中写为0b1001011000。

图3.16 十六进制整数转二进制整数转换方法(需要补齐)

为了方便读者进行转换,这里给出二进制整数和十六进制整数的转换关系,如表3-2所示。

表3.2 二进制整数与十六进制整数的转换关系