This answer表示python中整数的endiance取决于处理器体系结构。
这是否意味着像
msg = 0
msg |= 1 << n
根据处理器的不同,在不同的计算机上产生不同的结果?你知道吗
一位同事建议我使用x*2**n
而不是x << n
,因为前者应该是独立于平台的。但我真的不喜欢这样,因为这样会混淆我的意图,即在通过can总线发送的消息中设置一个特定的位,并且可能需要更多的处理能力(我不知道python解释器能够进行多少优化)。
这会产生不同的结果吗(假设x
和n
都是正整数)?你知道吗
Tags:
像这样的位操作不依赖于任何语言的硬件持久性,甚至不依赖于C语言。这些类型的操作发生在数字加载到CPU寄存器之后,此时内存中的布局无关紧要。你可以把它们本质上看作是算术运算,比如+或-。你知道吗
所以,你的大学是错误的,
x << n
在所有平台上的意思都是一样的。实际上,基本上所有的“基本”Python语言在所有平台上的工作方式都是相同的。标准库中只有非常特定于平台的函数不同。你知道吗关于shift操作还有一点:Python有点特别,因为它有无限长的整数,但是
<<
的工作方式与您预期的一样。1 << 1000
与2**1000
相同,通常x << n == x * (2**n)
如果x和n是整数。你知道吗相关问题 更多 >
编程相关推荐