在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