表达式:
操作数1 | & | 操作数2 |
注释:按位与运算是将参与运算的两个数据按对应的二进制数逐位进行逻辑与运算。当两个操作对象二进制数的相同位均为1时,结果数值的相应位为1,否则为0。
例题:用一个32位整数存储一个32门开关电路状态。
例:0000 0000 0000 0001说明第一个开关是开;
0000 0000 0000 0010说明第二个开关是开。
#include
#include
#include
int main()
{
int a;
scanf("%d",&a);/*从键盘输入一个值*/
bool ret;
ret=a&1;//如果ret=true第一个开关开
printf("\n%d",ret);
ret=a&2;//如何ret=true第二个开关开
printf("\n%d",ret);
ret=a&4;//如何ret=true第三个开关开
printf("\n%d",ret);
return 0;
}
表达式:
操作数1 | | | 操作数2 |
当两个对象二进制数的相同位均为0时,结果数值的相应位为0,否则为1。
#include
#include
#include
int main()
{
int a,ret;
scanf("%d",&a);
ret=a|1;
printf("\n%d",ret);
ret=a|2;
printf("\n%d",ret);
ret=a|4;
printf("\n%d",ret);
return 0;
}
3.位异或运算
表达式:
操作数1 | ^ | 操作数2 |
当两个二进制数的相同位互不相同的时候,对应位的结果为1,否则为0。
#include
#include
#include
int main()
{
int a,ret;
scanf("%d",&a);
ret=a<1;
printf("\n%d",ret);
ret=a<2;
printf("\n%d",ret);
ret=a<4;
printf("\n%d",ret);
return 0;
}
求绝对值:
#include
#include
#include
int main()
{
float x,absx;
scanf("%f",&x);
absx=x>0?x:-x;
printf("|%f|=%f",x,absx);
return 0;
}
absx=x>0?x:-x;,当x>0时,输出x,否则输出-x。
逗号运算:所有运算中,逗号运算的优先级最低;从左到右,依次结算各个操作数,并将最后一个操作数n的值作为整个逗号表达式的值。
#include
int main()
{
int a=100,b=0;
printf("逗号运算:b=%d",b=(a=10,100));
return 0;
}
b=100
转换数值的类型
#include
int main()
{
float a=12.34;
printf("类型转换运算:%d",(int)a);
return 0;
}
数值类型转化为int整数型,因此输出12。