加法器
如果你学过计算机组成原理,就肯定知道全加器的运算原理:通过异或运算来得到当前位的和,通过按位与运算得到下一位的进位,并把进位加进下一位的加数。根据这种思想可以写一个位运算实现的加法函数。
int Add(int x, int y)
{
if (y == 0)
return x;
else
return Add( x ^ y, (x & y) << 1);
}
乘法器
计算机内部实现乘法的原理是参考笔算乘法的,被乘数由低到高的每一位都与乘数相乘,在左移相应的位数(详细内容见《计算机组成原理》P40)。
int multiply(int a,int b)
{
int stair,product,x,y;
product=0;x=a;y=b;
do{
stair=(y&1)?x:0;
product+=stair;
y>>=1;x<<=1;
} while(y);
return product;
}