一般包括三种:按位与&,按位或|,按位异或^,三者均是在数字的二进制形式下进行计算的;
(1)按位与&,1与1为1,1与0,0与0均为0;
(2)按位或|,1或1为1,1或0为1,0或0为0;
(3)按位异或,相同为0,相异为1;
2.补码计算机中,存储整数均采用补码形式,正数的原,反,补码一致,而负数的反码等于源码除符号位
外,其余按位取反,补码等于反码加1
3.不用加法得出两个数相加结果一般情况下,加法运算包括进位和不进位两种结果, 而采用位运算进行加法,就相当于无进位加法+进位加法的结果。
例如:
a=101,即a=5;b=001,即b=1;第一次无进位的和是100,进位和是010,进位和不为0,就将上次无进位的和当作a,进位和当作b,如此循环,直到进位和为0,而无进位加法即按位异或,而进位加法为两个数按位与之后向左移动一位,代码如下:
int Add(int num1, int num2 ) //两个num1,num2 { while(num2)//直到进位相加数为0,循环停止 { int a=(num1&num2)<<1;//两个数按位与,再左移一位,得到每位数进位相加后的结果 num1=num1^num2;//将两个数无进位相加后的数赋值给num1; num2=a;//将进位相加后得到的数赋给num2, } return num1;//当进位相加为0,得到的无进位相加的结果即为两个数相加结果 }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)