-
慕的地8271018
进行除法的标准方法是实现二进制长除法。这涉及到减法,因此只要您不将其视作不是按位操作,就应该这样做。(请注意,您当然可以使用按位逻辑运算来非常麻烦地实现减法。)本质上,如果您正在这样做Q = N/D:对齐的最显著者N和D。计算t = (N - D);。如果为(t >= 0),则将的最低有效位设置Q为1并设置N = t。左移N1。左移Q1。转到步骤2。循环输出所需数量的输出位(包括小数),然后进行最后的移位以撤消您在步骤1中所做的操作。
-
不负相思意
int remainder =0;int division(int dividend, int divisor){ int quotient = 1; int neg = 1; if ((dividend>0 &&divisor<0)||(dividend<0 && divisor>0)) neg = -1; // Convert to positive unsigned int tempdividend = (dividend < 0) ? -dividend : dividend; unsigned int tempdivisor = (divisor < 0) ? -divisor : divisor; if (tempdivisor == tempdividend) { remainder = 0; return 1*neg; } else if (tempdividend < tempdivisor) { if (dividend < 0) remainder = tempdividend*neg; else remainder = tempdividend; return 0; } while (tempdivisor<<1 <= tempdividend) { tempdivisor = tempdivisor << 1; quotient = quotient << 1; } // Call division recursively if(dividend < 0) quotient = quotient*neg + division(-(tempdividend-tempdivisor), divisor); else quotient = quotient*neg + division(tempdividend-tempdivisor, divisor); return quotient; }void main(){ int dividend,divisor; char ch = 's'; while(ch != 'x') { printf ("\nEnter the Dividend: "); scanf("%d", ÷nd); printf("\nEnter the Divisor: "); scanf("%d", &divisor); printf("\n%d / %d: quotient = %d", dividend, divisor, division(dividend, divisor)); printf("\n%d / %d: remainder = %d", dividend, divisor, remainder); _getch(); }}
-
达令说
使用按位运算符将两个数相除。#include <stdio.h>int remainder, divisor;int division(int tempdividend, int tempdivisor) { int quotient = 1; if (tempdivisor == tempdividend) { remainder = 0; return 1; } else if (tempdividend < tempdivisor) { remainder = tempdividend; return 0; } do{ tempdivisor = tempdivisor << 1; quotient = quotient << 1; } while (tempdivisor <= tempdividend); /* Call division recursively */ quotient = quotient + division(tempdividend - tempdivisor, divisor); return quotient;} int main() { int dividend; printf ("\nEnter the Dividend: "); scanf("%d", ÷nd); printf("\nEnter the Divisor: "); scanf("%d", &divisor); printf("\n%d / %d: quotient = %d", dividend, divisor, division(dividend, divisor)); printf("\n%d / %d: remainder = %d", dividend, divisor, remainder); getch();}