0

可能重复:
用位运算符实现除法

我最近更深入地了解了按位函数,并开始使用按位运算符实现基本的算术函数。到目前为止,我已经得到了(+, -, *). 但是,我不确定如何处理除法。我知道我可以以某种方式使用乘法,但也不确定如何使用该方法来解决这个问题。

那么我将如何仅使用按位运算符来实现除法:(|, &, ~, ^, >>, <<)在 C 中?对于任何询问的人,这不是功课,只是个人知识。

如果你喜欢,你可以在代码中调用下面的函数来使它更容易(这些是预先写好的)

int badd(int n1, int n2);
int bsub(int n1, int n2);
int bmult(int n1, int n2);
4

1 回答 1

0

好吧,假设您有可用的标准库,您可以在 C 中完全不使用任何运算符来划分两个整数:

int result = div(a, b).quot;

注意:这个答案纯粹是修辞,但是当标准库(和语言本身)支持它时,它被放在那里是为了表明试图用 C 编写整个除法函数是愚蠢的。当答案已经触手可及时,为什么还要重新编写轮子(即使只是为了学习)?

于 2012-09-22T01:24:02.427 回答