如何在 Python 中打印变量的位
How to print a viariable's bits in Python
如果我用 Python 启动终端,然后我写:
>>> x = 100
>>> x == 100
True
>>> x is 100
True
我可以很容易地看出布尔值对 ==
和 is
都适用
但是如果我尝试将 1000
设置为变量结果我有:
>>> x = 1000
>>> x == 1000
True
>>> x is 1000
False
有没有办法让我看看变量是如何一点一点地存储在内存中的?我不想要 memory pointers,我想看看 0
和 1
看看 Python 是什么 存储 .
- 十进制的 100 = 二进制的 01100100(8 位 = 1 个八位字节)
- 十进制的 1000 = 二进制的 0000001111101000(16 位 = 2 个八位字节)。
100 适合 8 位八位组,而 1000 不能适合它。
根据我的理解,==
总是给出一个 TRUE
,因为它正在 读取一个值 而 is
正在读取一个 内存 space,所以最终它只读取八位组的前 8 位。
尤里卡!
谢谢大家的帮助!
我现在明白,这不是关于 Python 如何以二进制代码存储信息,而是关于 Python 如何为 -5 到 256(含)范围内的整数存储每个分配的整数对象):
>>> x = 256
>>> y = 256
>>> id(x)
22980640
>>> id(y)
22980640
然后:
>>> x = 257
>>> y = 257
>>> id(x)
23550352
>>> id(y)
23550328
如果我用 Python 启动终端,然后我写:
>>> x = 100
>>> x == 100
True
>>> x is 100
True
我可以很容易地看出布尔值对 ==
和 is
都适用
但是如果我尝试将 1000
设置为变量结果我有:
>>> x = 1000
>>> x == 1000
True
>>> x is 1000
False
有没有办法让我看看变量是如何一点一点地存储在内存中的?我不想要 memory pointers,我想看看 0
和 1
看看 Python 是什么 存储 .
- 十进制的 100 = 二进制的 01100100(8 位 = 1 个八位字节)
- 十进制的 1000 = 二进制的 0000001111101000(16 位 = 2 个八位字节)。
100 适合 8 位八位组,而 1000 不能适合它。
根据我的理解,==
总是给出一个 TRUE
,因为它正在 读取一个值 而 is
正在读取一个 内存 space,所以最终它只读取八位组的前 8 位。
尤里卡! 谢谢大家的帮助!
我现在明白,这不是关于 Python 如何以二进制代码存储信息,而是关于 Python 如何为 -5 到 256(含)范围内的整数存储每个分配的整数对象):
>>> x = 256
>>> y = 256
>>> id(x)
22980640
>>> id(y)
22980640
然后:
>>> x = 257
>>> y = 257
>>> id(x)
23550352
>>> id(y)
23550328