python中整数的位运算是否依赖于处理器?

2024-09-29 23:19:11 发布

您现在位置:Python中文网/ 问答频道 /正文

This answer表示python中整数的endiance取决于处理器体系结构。 这是否意味着像

msg = 0
msg |= 1 << n

根据处理器的不同,在不同的计算机上产生不同的结果?你知道吗

一位同事建议我使用x*2**n而不是x << n,因为前者应该是独立于平台的。但我真的不喜欢这样,因为这样会混淆我的意图,即在通过can总线发送的消息中设置一个特定的位,并且可能需要更多的处理能力(我不知道python解释器能够进行多少优化)。 这会产生不同的结果吗(假设xn都是正整数)?你知道吗


Tags: answer消息体系结构计算机msg整数平台处理器
1条回答
网友
1楼 · 发布于 2024-09-29 23:19:11

像这样的位操作不依赖于任何语言的硬件持久性,甚至不依赖于C语言。这些类型的操作发生在数字加载到CPU寄存器之后,此时内存中的布局无关紧要。你可以把它们本质上看作是算术运算,比如+或-。你知道吗

所以,你的大学是错误的,x << n在所有平台上的意思都是一样的。实际上,基本上所有的“基本”Python语言在所有平台上的工作方式都是相同的。标准库中只有非常特定于平台的函数不同。你知道吗

关于shift操作还有一点:Python有点特别,因为它有无限长的整数,但是<<的工作方式与您预期的一样。1 << 10002**1000相同,通常x << n == x * (2**n)如果x和n是整数。你知道吗

相关问题 更多 >

    热门问题