首先我们应该知晓位操作符都是针对二进制的补码而言,因此在进行相关计算时,要写出对应的补码再进行计算哦!当然最后别忘了要转换为原码得最终结果!
1.解析位操作符
1.按位与——&
同1为1,否则为0.举个栗子:
2.按位或——|
有1为1,否则为0.举个栗子:
3.按位异或——^
相同为0,否则为1.举个栗子:
4.按位取反——~
0——1,1——0.同样也是举个栗子:
2.位操作符里的小tips
1.n&(n-1)
n是整型变量
n&(n-1)这个表达式可以把n二进制中最右边的1去掉
该表达式也可以用来计算一个数二进制中1的个数:
#include<stdio.h>
int main()
{
int n = 2, count = 0;
while (n)
{
n = n & (n - 1);
count++;
}
printf("%d", count);
}
这里输出的count是2二进制中1的个数。
2.((n>>i)&1)==1
输出的count也是二进制补码中1的个数。
3.if(n&(n-1)==0)
满足条件则n为2的次方数。
4.0和任何数按位与结果都为0,0和一个数按位或和按位异或结果都为这个数。
0^n=n
0|n=n
0&n=0
还有一些关于位操作符的题目雯雯就放在下次啦!今天就到此为止吧!