亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用按位運算符實現除法

用按位運算符實現除法

搖曳的薔薇 2019-11-25 14:14:32
如何使用按位運算符實現除法(而不僅僅是除以2的冪)?詳細描述它。
查看完整描述

3 回答

?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

進行除法的標準方法是實現二進制長除法。這涉及到減法,因此只要您不將其視作不是按位操作,就應該這樣做。(請注意,您當然可以使用按位邏輯運算來非常麻煩地實現減法。)

本質上,如果您正在這樣做Q = N/D

  1. 對齊的最顯著者ND。

  2. 計算t = (N - D);

  3. 如果為(t >= 0),則將的最低有效位設置Q為1并設置N = t。

  4. 左移N1。

  5. 左移Q1。

  6. 轉到步驟2。

循環輸出所需數量的輸出位(包括小數),然后進行最后的移位以撤消您在步驟1中所做的操作。


查看完整回答
反對 回復 2019-11-25
?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

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", &dividend);

        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();

    }

}


查看完整回答
反對 回復 2019-11-25
?
達令說

TA貢獻1821條經驗 獲得超6個贊

使用按位運算符將兩個數相除。


#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", &dividend);

    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();

}


查看完整回答
反對 回復 2019-11-25
  • 3 回答
  • 0 關注
  • 1434 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號