1.与:&
2.或:|
3.非:~
4.异或:^
5.同或:~^
6.左移:(<<)
7.右移:(>>)
注意:位运算符中求反运算“~“优先级最高,而左移和右移相同,居于第二,接下来的顺序是按位与 “&“、按位异或 “∧“和按位或 “|“。顺序为~ << >> & ∧ | 。
在c语言中,!和~均表示取反,这两个的区别在于:
! :代表逻辑取反,即:把非0的数值变为0,0变为1;
~ :表示按位取反,即在数值的二进制表示方式上,将0变为1,将1变为0;
查表法计算一个十进制数中1的个数:
#include<stdio.h>
int getbit(int x)
{
int sum=0;
int ar[]={0,1,1,22,1,2,2,3,1,2,2,3,2,3,3,4};
for(int i=0;i<sizeof(int)*2;++i)
{
sum=sum+ar[x&0x0f];
x=x>>4;
}
return sum;
}
int main()
{
int x;
scanf("%d",&x);
int sum=getbit(x);
printf("%d",sum);
return 0;
}