在c中位运算符有:与、 或、异或、取反、左移和右移,位运算符是以二进制进行运算的。
右移运算符,是将一个数的各二进制位右移动n位,移到右端的低位被舍弃,对于无符号数,高位补0,即在十进制中,每右移动一位等价于除以2,例如:
a:10101010 01010101 a>>2:00101010 10010101。
对于有符号数,某些机器将对左边空出的部分用符号位填补但一些机器则对左边空出的部分用0填补。例如:
a:11100111 00011101 a>>1:01110011 10001110或11110011 10001110。
c中源代码:
写出15转化为二进制后1的个数。
#include<stdio.h>
int main()
{
int a=15;
int count=0;
while(a)
{
if(a%2==1)
count++;
a=a>>1;}
printf("%d",count);
return 0;
}
结果为:4
与运算符:按位与运算符&经常用于屏蔽某些二进制位。例如:
a:1001 0111 b:1111 0000 a&b:1001 0000
c程序
输入一个数转化为二进制后1的个数。
#include<stdio.h>
int main()
{
int count=0;
int num;
scanf("%d",&num);
while(num)
{
count++;
num=num&(num-1);
}
printf("%d\n",count);
return 0;
}
结果:4
转载于:https://blog.51cto.com/19940325/1704351