<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(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 來(lái)源:網(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é)果長(zhǎng)度
          nByNumLen = strlen(szByNum);
          nNumLen = strlen(szNum);
          nResultLen = nNumLen+ nByNumLen;
          //乘數(shù)長(zhǎng)度從右向左依次
          l = nResultLen-1;
          for (i = nNumLen-1; i >= 0; i--)
          {
          nTempLen = l;
          for (j = nByNumLen-1; j >= 0; j--, nTempLen--)
          {
          //結(jié)果第一次從最后一位開(kāi)始,第二次從倒數(shù)第二位開(kāi)始放
          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ù)第二位開(kāi)始
          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ù)的長(zhǎng)度
          //將除數(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ù)的長(zhǎng)度即可
          {
          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)) //符號(hào)判斷,看有負(fù)數(shù)沒(méi)?
          ||((l>0)&&(szByNum[l-1]<0)))
          {
          quotient[l]--;
          for(k=nNumLen-1;k>=0;k--)
          {
          szByNum[k+l]+=szNum[k]; //變成了負(fù)數(shù),要加回來(lái)
          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] = 看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();