C中的二进制整数除法?

C中的二进制整数除法?,c,binary,division,translate,integer-division,C,Binary,Division,Translate,Integer Division,我在看维基百科的部分,想知道如何将它翻译成另一种语言,比如C语言 如果D==0,则错误(DivisionByZeroException)结束 Q:=0——将商和余数初始化为零 R:=0 对于i=n-1…0 do——其中n是n中的位数 R:=R=D那么 R:=R-D Q(i):=1 结束 结束 我知道如何翻译它的大部分内容并进行位移位,但是当它们是整数而不是函数或函数指针时,我将如何执行类似R(0)=N(I)或Q(I)=1?很抱歉问了一个基本问题,这一小部分让我很感兴趣。以下是您的做法 // R

我在看维基百科的部分,想知道如何将它翻译成另一种语言,比如C语言

如果D==0,则错误(DivisionByZeroException)结束
Q:=0——将商和余数初始化为零
R:=0
对于i=n-1…0 do——其中n是n中的位数
R:=R=D那么
R:=R-D
Q(i):=1
结束
结束
我知道如何翻译它的大部分内容并进行位移位,但是当它们是整数而不是函数或函数指针时,我将如何执行类似
R(0)=N(I)
Q(I)=1
?很抱歉问了一个基本问题,这一小部分让我很感兴趣。

以下是您的做法

// R(0) := N(i)
R = (R & ~0x01) | ((N >> i) & 0x01);
第一部分清除r的0位,然后用N的第i位清除r,将其下移到0位。在N(i)==0的情况下,必须首先清除位

如果要将位设置为1,则在上面

如果要将位清除为0,X(n)=0:


X&=~(0x01掩蔽并使用逐位操作。0010 | 1000=1010。您只需设置一个位。进一步解释请查看:从这里开始:可能的重复甚至不需要清除第一行中的位,因为
R
在前一行左移。True。但我必须添加上下文来描述它。So我只是孤立地做了这个操作。我做了一个简单的例子来说明细节,因为初学者经常会忽略它。
// Q(i) = 1
Q |= 0x01 << i;
(X >> n) & 0x01;
X &= ~(0x01 << n);
X ^= (0x01 << n);
X = (X & ~(0x01 << n)) | (y << n);  // Assumes y = 0 or 1.