python--基础知识点--int所占字节长度
以python3版本为例说明, int 类型在python中是动态长度的。因为python3中int类型是长整型,理论⽀持⽆限⼤的数字,但它的结构其实也很简单, 在 longintepr.h 中定义:
struct _longobject {
PyObject_VAR_HEAD
二郎神照片digit ob_digit[1];
};
python基础知识整理这结构是什么意思呢,重点在于 ob_digit 它是⼀个数组指针。digit 代表的是是python中的 int。python中整型结构中的数组,每个元素最⼤存储 15 位的⼆进制数(不同位数操作系统有差异32位系统存15位,64位系统是30位)。
# 此处以64位系统为例
import sys
# 起始长度位24B(PyObject_VAR_HEAD 的⼤⼩)
# 10进制数所表⽰的⼆进制数未超过30位时,长度为28B = 24B + 4B
# 10进制数所表⽰的⼆进制数超过30位⽽未超过60位时,长度为32B = 28B + 4B
# 以此类推
print('0'.center(20,'='))
sizeof(0))# 使⽤了24B(PyObject_VAR_HEAD 的⼤⼩)
print('1'.center(20,'='))
sizeof(1))# ⼆进制未超过30位,使⽤了28B = 24B + 4B
print('1 << 29'.center(20,'='))
运用到网页的js特效sizeof(1<<29))# ⼆进制未超过30位,使⽤了28B = 24B + 4B
print('1 << 30'.center(20,'='))
sizeof(1<<30))# ⼆进制超过30位⽽未超过60位,使⽤了32B = 28B + 4B
print('1 << 59'.center(20,'='))
sizeof(1<<59))# ⼆进制超过30位⽽未超过60位,使⽤了32B = 28B + 4B
print('1 << 60'.center(20,'='))
sizeof(1<<60))# ⼆进制超过60位⽽未超过90位,使⽤了36B = 32B + 4B
"""
运⾏结果如下:
=========0==========
24
递归函数经典案例=========1==========
28
======1 << 29=======
28
======1 << 30=======
32
======1 << 59=======
32
======1 << 60=======
系统架构图 入门java环境测试36
Process finished with exit code 0
"""
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论