java - 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;
}