二进制的乘法

    技术2022-05-11  76

    二级制的乘法非常的简单,它就像只有0和1的十进制乘法。

          1010

    ×   0101

    ------------

          1010

      1010

    -------------

      110010

     /*C语言代码,小生写得很死,仅供参考*/

    #include <stdio.h>void Add(int i[], int j[]);void LeftMove(int a[]);void RightMove(int b[]);void print(int c[]);main(){  int i, Z[8]; int X[8] = {0,0,0,0,1,0,1,0}; int Y[8] = {0,0,0,0,0,1,0,1}; for(i=0; i<8; i++) {  Z[i] = 0; } for(i=0; i<8; i++) {  if(Y[7] == 1)   Add(Z, X);  LeftMove(X);  RightMove(Y); } print(Z);}

    void Add(int z[], int x[]){ int i,flag = 0; for(i=7; i>0; i--) {  if(flag == 0)  {   z[i] = z[i] + x[i];   if(z[i] == 2)   {    z[i] = 0;    flag = 1;   }   else if(z[i] == 3)   {    z[i] = 1;    flag = 1;

       }  }  else  {   z[i] = z[i] + x[i] + 1;   flag = 0;   if(z[i] == 2)   {    z[i] = 0;    flag = 1;   }   else if(z[i] == 3)    {    z[i] = 1;    flag = 1;

       }  } }}void LeftMove(int a[]){ int i; for(i=0;i<7;i++) {  a[i] = a[i+1]; } a[7] = 0;}void RightMove(int b[]){ int i; for(i=7;i>0;i--) {  b[i] = b[i-1]; } b[0] = 0;}

    void print(int c[]){ int i; for(i=0; i < 8; i++) {  printf("%d",c[i]); } printf("/n");}


    最新回复(0)