gpt4 book ai didi

java - 为什么按位左移在 Python 和 Java 中返回不同的结果?

转载 作者:太空狗 更新时间:2023-10-29 17:39:19 26 4
gpt4 key购买 nike

我正在尝试将一些功能从 Java 应用移植到 Python。

在 Java 中,

System.out.println(155 << 24);

返回:-1694498816

在 Python 中:

print(155 << 24)

返回 2600468480

许多其他按位运算在两种语言中的工作方式相同。为什么这两个操作会有不同的结果?


编辑:我试图在 python 中创建一个函数来复制左移运算符在 Java 中的工作方式。类似的东西:

def lshift(val, n):
return (int(val) << n) - 0x100000000

但这似乎不对,因为(我认为)它会将所有数字都变成负数?


EDIT2:几个小时后,我决定使用 Python 来完成这项工作可能不是最好的主意,并将使用 Java 应用程序的一部分并将其用作现有 Python 应用程序的微服务。

最佳答案

Java 有 32 位固定宽度整数,所以 155 << 24移动 155 的最高设置位(这是第 7 位,从零开始计数,因为 155 大于 27 但小于 28)到符号位(第 31 位),你最终负数。

Python 有任意精度的整数,所以 155 << 24在数值上等于正数 155 × 224

关于java - 为什么按位左移在 Python 和 Java 中返回不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35578435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com