C语言和C++运算符
&按位与
|按位或
^按位异或
~取反
>>右移
<<左移
#include<stdio.h>
//& |^//~
//>> <<
int main()
{
char a = 67;
char b = 0x54;
char c = 0;
c = a & b;
printf("%x\n", c);
c= a | b;
printf("%x\n", c);
c = a ^ b;
printf("%x\n", c);
a = ~b;
printf("%x\n", a);
printf("%x\n", b);
return 0;
}
Get1Bit
编写一个函数,求一个十进制的整数的二进制数中有几个1
#include<stdio.h>
int Get1Bit(int x)
{
int sum = 0;
while(x!=0)
{
if (x & 0x01)
{
sum += 1;
}
x = x >> 1;
}
return sum;
}
}
int main()
{
int x = 23;
int sum = Get1Bit(x);
printf("%d\n", sum);
return 0;
}
#include<stdio.h>
int Get1Bit(int x)
{
int sum = 0;
int a = 1;
for (int i = 0; i < 32; ++i)
{
if (x & a)
{
sum += 1;
}
a = a << 1;
return sum;
}
}
int main()
{
int x = 23;
int sum = Get1Bit(x);
printf("%d\n", sum);
return 0;
}
#include<stdio.h>
int Get1Bit(int x)
{
int sum = 0;
while(x!=0)
{
x=x&(x-1);
sum+=1;
}
return sum;
}
int main()
{
int x = 23;
int sum = Get1Bit(x);
printf("%d\n", sum);
return 0;
}
十进制左移一位相当于乘以十,右移一位相当于除以十
二进制左移一位相当于乘以二,右移一位除以二
int main()
{
int a = 10; //10
int b = 010;//8
int c = 0x10; //16
int d = 0b1010;//2
printf("%d%d%d%d")
return 0;
}