首页 > 解决方案 > Java中两个长奇数/偶数的平均值没有溢出

问题描述

请参阅下面的代码。我很难找到一个解决方案,Java 中两个数字的平均值不会导致溢出。问题是当我将一个奇数与一个偶数负整数相加时,例如 11 和 -12 的结果是我在下面使用的平均值为 1。有没有一种不使用数学程序而只使用原始编程的实际方法?

if (maximum > minimum) {
  this.max = maximum; this.min = minimum;
  this.counter = (minimum & maximum) + ((minimum ^ maximum) >> 1);
}
else if (minimum > maximum) {
  this.min = maximum; this.max = minimum;
  this.counter = (maximum & minimum) + ((maximum ^ minimum) >> 1);
}
else {
  this.max = maximum; this.min = minimum; counter = this.max;
}

标签: java

解决方案


推荐阅读