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;