python中 int类型的数占据内存的大小

以python3版本为例说明, int 类型在python中是动态长度的。因为python3中int类型是长整型,理论支持无限大的数字,但它的结构其实也很简单, 在 longintepr.h 中定义:

struct _longobject {
    PyObject_VAR_HEAD
    digit ob_digit[1];
};

这结构是什么意思呢,重点在于 ob_digit 它是一个数组指针。digit 可认为是 int的别名。python的整型存储机制是这样的。比方要表示一个很大的数:123456789 。而每个元素最大只能表示3位十进制数(为理解打的比方)。那么python就会这样存储:

ob_digit[0] = 789
ob_digit[1] = 456
ob_digit[2] = 123

低位存于低索引下。python中整型结构中的数组,每个元素最大存储 15 位的二进制数(不同位数操作系统有差异32位系统存15位,64位系统是30位)。

因此,sys.getsizeof(0) 数组元素为0。此时占用24字节(PyObject_VAR_HEAD 的大小)。 sys.getsizeof(456) 需使用一个元素,因此多了4个字节。

转载于:https://blog.csdn.net/mjl960108/article/details/80191308

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值