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