二级制的乘法非常的简单,它就像只有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");}