在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 8位單片機(jī),大數(shù)運(yùn)算,可以運(yùn)算任意位數(shù)的乘除法

            8位單片機(jī),大數(shù)運(yùn)算,可以運(yùn)算任意位數(shù)的乘除法

            作者: 時(shí)間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
            #include
            #include "stdio.h"
            #include "string.h"
            #include "intrins.h"
            #define BIT 10
            //WriteBy :Rlogin Xukaiming
            void BigNumMul(char szByNum[], char szNum[], char aryResult[])
            {
            int nByNumLen, nNumLen, nTempLen, nResultLen ;
            int i,j,k,l;
            //結(jié)果長度
            nByNumLen = strlen(szByNum);
            nNumLen = strlen(szNum);
            nResultLen = nNumLen+ nByNumLen;
            //乘數(shù)長度從右向左依次
            l = nResultLen-1;
            for (i = nNumLen-1; i >= 0; i--)
            {
            nTempLen = l;
            for (j = nByNumLen-1; j >= 0; j--, nTempLen--)
            {
            //結(jié)果第一次從最后一位開始,第二次從倒數(shù)第二位開始放
            aryResult[nTempLen] = aryResult[nTempLen] + (szNum[i] - 0) * (szByNum[j] -0);
            }
            //進(jìn)位處理
            for (k = l; k >0; k--) //從后往前處理
            {
            if (aryResult[k] > BIT)
            {
            aryResult[k-1] = aryResult[k-1] + aryResult[k] / BIT;
            aryResult[k] = aryResult[k] % BIT;
            }
            }
            //下一次得從倒數(shù)第二位開始
            l--;
            }
            for(nResultLen=nResultLen-1;nResultLen>=0;nResultLen--) //變成字符串
            {
            aryResult[nResultLen]+=0;
            _nop_();
            }
            _nop_();
            }
            void BigNumDiv(char szByNum[], char szNum[], char quotient[],char **remainder )
            {
            int nByNumLen, nNumLen, nTempLen, nResultLen ;
            int j,k,l=0;
            nByNumLen = strlen(szByNum);
            nNumLen = strlen(szNum);
            nResultLen = nByNumLen - nNumLen+1; //估計(jì)商數(shù)的長度
            //將除數(shù)和被除數(shù)變成10進(jìn)制數(shù)字
            for(j=nByNumLen-1;j>=0;j--)
            {
            szByNum[j] -=0;
            }
            for(j=nNumLen-1;j>=0;j--)
            {
            szNum[j] -= 0;
            }
            ///////////////////////////////除法就是減法 ?
            for(j=nResultLen-1;j>=0;j--)
            {
            quotient[l]=0;
            while(1)
            {
            quotient[l]++; //商數(shù)加1
            for(k=nNumLen-1;k>=0;k--) //減除數(shù)的長度即可
            {
            szByNum[k+l]-=szNum[k]; //減掉除數(shù)
            if(szByNum[k+l]<0)
            {
            //if((l!=0)||(k+l>1)) //第一次防止借位借到-1位
            if(k+l>0)
            {
            szByNum[k+l-1]-=1; //借位=10
            szByNum[k+l]+=BIT;
            }
            }
            } //(szByNum[0]<0)||(
            if(((l==0)&&(szByNum[l]<0)) //符號判斷,看有負(fù)數(shù)沒?
            ||((l>0)&&(szByNum[l-1]<0)))
            {
            quotient[l]--;
            for(k=nNumLen-1;k>=0;k--)
            {
            szByNum[k+l]+=szNum[k]; //變成了負(fù)數(shù),要加回來
            if(szByNum[k+l]>=BIT)
            {
            if(k+l>0) //第一次防止借位借到-1位
            {
            szByNum[k+l-1]+=1;
            szByNum[k+l]-=BIT;
            }
            }
            }
            _nop_();
            break;
            }
            }
            quotient[l]+=0; //轉(zhuǎn)為ASCII
            l++;
            }
            for(j=l;j
            {
            szByNum[j]+=0;
            }
            *remainder = &szByNum[l];
            quotient[l] =