仅使用按位运算划分两个整数

时间:2012-09-22 01:09:58

标签: c int bit-manipulation division

  

可能重复:
  implement division with bit wise operator

我最近通过按位函数深入研究,并开始使用按位运算符实现基本算术函数。到目前为止,我已经得到了(+, -, *)。但是我不确定如何接近分裂。我知道我可以以某种方式使用乘法,但不知道如何使用该方法来处理它。

那么我如何仅使用按位运算符来实现除法:C中的(|, &, ~, ^, >>, <<)?对于任何要求的人来说,这不是家庭作业,只是个人知识。

如果您愿意,可以在代码中调用以下函数以使其更容易(这些是预先编写的)

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

1 个答案:

答案 0 :(得分:0)

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

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

注意:这个答案纯粹是修辞,但它被用来表明在C语言中尝试编写完整的分割函数时的愚蠢,当标准库(和语言)本身)支持它。当答案已经触手可及时,你为什么要重新编写方向盘(即使只是为了学习)?