3 回答

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
選項(xiàng):
根據(jù)您在小學(xué)學(xué)習(xí)的長(zhǎng)除法算法編寫自己的除法算法。
取分母的-1的冪,然后乘以分子
取分子和分母的對(duì)數(shù),減去,然后將對(duì)數(shù)的底數(shù)提高到相同的冪
我并不特別喜歡這樣的問題,因?yàn)槲覀兓旧鲜窃趯ふ矣薮赖陌褢?,但事?shí)確實(shí)如此。

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊
以下是不使用除法運(yùn)算符對(duì)數(shù)字進(jìn)行除法的Java代碼。
private static int binaryDivide(int dividend, int divisor) {
int current = 1;
int denom = divisor;
// This step is required to find the biggest current number which can be
// divided with the number safely.
while (denom <= dividend) {
current <<= 1;
denom <<= 1;
}
// Since we may have increased the denomitor more than dividend
// thus we need to go back one shift, and same would apply for current.
denom >>= 1;
current >>= 1;
int answer = 0;
// Now deal with the smaller number.
while (current != 0) {
if (dividend >= denom) {
dividend -= denom;
answer |= current;
}
current >>= 1;
denom >>= 1;
}
return answer;
}
添加回答
舉報(bào)