Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 仅使用按位运算除以两个整数_C_Int_Bit Manipulation_Division - Fatal编程技术网

C 仅使用按位运算除以两个整数

C 仅使用按位运算除以两个整数,c,int,bit-manipulation,division,C,Int,Bit Manipulation,Division,可能重复: 我最近对逐位函数有了更深入的了解,并开始用逐位运算符实现基本的算术函数。到目前为止,我已经得到了(+,-,*)。然而,我真的不知道如何接近部门。我知道我可以用乘法来代替,但也不知道如何用这个方法来实现 那么,我如何仅使用位运算符来实现除法呢:(|,&,~,^,>>,好吧,假设有可用的标准库,您可以在C中不使用任何运算符来除法两个整数: int result = div(a, b).quot; 注意:这个答案纯粹是修辞性的,但它的出现是为了说明在标准库(以及语言本身)支持的情况下,

可能重复:

我最近对逐位函数有了更深入的了解,并开始用逐位运算符实现基本的算术函数。到目前为止,我已经得到了
(+,-,*)
。然而,我真的不知道如何接近部门。我知道我可以用乘法来代替,但也不知道如何用这个方法来实现


那么,我如何仅使用位运算符来实现除法呢:
(|,&,~,^,>>,好吧,假设有可用的标准库,您可以在C中不使用任何运算符来除法两个整数:

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

注意:这个答案纯粹是修辞性的,但它的出现是为了说明在标准库(以及语言本身)支持的情况下,试图用C编写一个完整的除法函数是愚蠢的。你为什么要重新编写轮子(即使只是为了学习)当答案已经在你的指尖上时?

对于这样的难题,你不必提及家庭作业:)我建议的dupe链接使用减法。但是我假设你已经有了这个功能。符号有什么关系吗?你需要只使用一个表达式来完成它吗?还是允许使用函数和流控制语句?@Link:用
bsub()
替换重复链接中的减号操作符,你就完成了。这不是我所说的函数,我以为你会把代码作为一个函数来实现。但是在优雅方面做得很好。@Link哈哈,这真是一个笑话,不用运算符进行除法当然是可能的,但问题是为什么,什么时候可以使用运算符或汇编指令进行除法。我还知道一种使用
文件*
fwrite
/
fread
的方法,如果你想看到的话。@RichardJ.RossIII:对你的笔记进行评论:了解事情是如何运作的。当被问到为什么有人要攀登珠穆朗玛峰时,也就是说“因为它就在那里”。你给出的“修辞性”回答是我那句老话的一个主要例子:如果你知道如何使用函数
SolveAllMathProblems()
,你仍然不懂数学。
int result = div(a, b).quot;