0%

整型数据详述和进制转换

整型数据概述

整型数字在 Python 中的关键字是 int,整形在计算机中用于计算和比较。

在 32 位机器上 int 的范围是:-2**31 ~ 2**31 - 1,也就是-2147483648 ~ 2147483647

在 64 位机器上 int 的范围是:-2**63 ~ 2**63 - 1,也就是-9223372036854775808 ~ 9223372036854775807

在 Python 3 中,整型统统使用 int。在 Python 2 中,较小的整形函数也用 int,但是对于数值很大的整型,需要使用 long

在 Python 2 中,数值较大的整型数据结尾可能 会出现一个 L 标识,例如 321312321L。在 Python 3 中,无论数值有多大,都不会出现这种标识。

进制转换初识

10 进制转换为 2 进制

整除 2,获取余数,将余数从下向上整合。例如求 11 的二进制数:

1
2
3
4
5
6
除数	余数
11 1
5 1
2 0
1 1
0

于是,11 的二进制数就是 1011

2 进制转换为 10 进制

从右向左,每一位的权重是 2**(位数 - 1)。位数是从右向左数到的次序。例如,倒数第一位的权重是 2**0,即 1,倒数第二位的权重为 2**1,即 2。将二进制转换为十进制,只需要将二进制每一位的数值乘以改为的权重然后将它们想加到一起即可。例如,我们可以这样计算二进制数 1011 的十进制数值:

1
2
3
1 * 2 ** 0 + 1 * 2 ** 1 + 0 * 2 ** 2 + 1 * 2 ** 3
= 1 + 2 + 0 + 8
= 11

使用 Python 进行进制转换

  • bin(<十进制数>):将十进制数转换成二进制(常用)
  • int("字符串", 2):将某个进制(示例中为二进制)转换为十进制

示例如下:

1
2
3
4
>>> bin(11)
'0b1011'
>>> int('1011', 2)
11

整型(数字)总结

  • 整型是不可变数据类型

  • 可以在原地修改的叫做可变数据类型,不能在原地修改的叫做不可变数据类型

    我们可以用id()来查看数据的内存地址,例如:

    1
    2
    3
    4
    5
    a = 10    # 1428849040
    # id -- 查看空间内存地址
    print(id(a))
    a = a + 1 # 1428849072
    print(id(a))

    将数据修改后,内存地址发生改变。