【发布时间】:2020-05-30 21:23:37
【问题描述】:
我正在阅读 Leetcode 问题的答案:https://leetcode.com/problems/divide-two-integers/。这个问题不需要使用乘法。在阅读了几个答案之后,我莫名其妙地误认为x+x 在内存和避免类型溢出方面优于2*x。发布问题后,我找不到任何证据来支持这一说法。请忽略这个问题。
我看到 Java 中的一个常见做法是使用 x + x 而不是 2*x,尤其是对于 int。例如
int x = 1;
x += x;
代替
int x = 1;
x = 2*x;
使用
if (a < b + b) {
...
}
代替
if (a < 2*b) {
...
}
x + x 是否比2*x 节省更多内存?
【问题讨论】:
-
你在哪里看到的?你能分享一个例子的链接吗?
-
"2*x 是否存在数据类型溢出问题?"是的,但它与
x + x完全相同。 -
我很惊讶它没有使用
x << 1。但猜测“2”只是常量表的一个常量,x已经是内存中的一个值。 -
@markspace 我很难相信差异是相关的。
-
您可能可以运行一些测试并跟踪挂墙时间。
标签: java integer-overflow