我在int中使用BigInteger來重新實現一個函數。現在有步驟BigInteger無符號左移或右移
h = n >>> log2n--
但我在這裏面臨麻煩。在原始代碼h中,n,log2n都是int類型,如果我將h,n和log2n設置爲BigInteger,那麼上面代碼的等效表達式是什麼?如何在BigInteger中執行無符號右移(>>>)?
編輯: 的碼塊是:
int log2n = 31 - Integer.numberOfLeadingZeros(n);
int h = 0, shift = 0, high = 1;
while (h != n)
{
shift += h;
h = n >>> log2n--;
int len = high;
high = (h & 1) == 1 ? h : h - 1;
len = (high - len)/2;
if (len > 0)
{
p = p.multiply(product(len));
r = r.multiply(p);
}
}
你知道Java沒有運算符重載,對不對? – 2011-03-12 10:07:09
是的。我不是說操作符重載。沒有找到無符號移位操作的轉向方法或方法或算法嗎? – 2011-03-12 10:09:40