这一节主要说的是位运算,计算机中的执行速度:位运算 > 加减 > 乘除 > 求余
位运算就是将数字转换成二进制后进行运算,之后再将数字转换成原来的进制
与运算:当两个数相与时,只有都为l的时候结果才为1,其余情况结果都为0,符号 &
#include
int main(){
int a;
scanf("%d",&a);
printf("%d\n",a&1);
return 0;
}
这个程序可以判断a是偶数还是奇数,输出为1说明a是奇数,否则是偶数
或运算:当两个数相或时,只要有一个为1结果就是1,两个都为0时结果才是0,符号|
#include
int main(){
int a;
scanf("%d",&a);
printf("%d\n",a|0);
return 0;
}
这个程序可以判断a是偶数还是奇数,输出为1说明a是奇数,否则是偶数,符号 !
非运算:将1变成0,将0变成1
#include
int main(){
bool a = true;
printf("%d\n",!a);
return 0;
}
a为true,取返后是false,就是0
注意:当符号是 &&、||时也是两个数相与相或,但是这个时候就不会将数字转换成二进制运算,而是只要这个数字非0就当成1直接参与运算,返回一个bool值
当&&、||运算两边是表达式的时候
#include
int main(){
int a = 1,b = 1;
if(a++ || b++){
}
printf("a = %d,b = %d",a,b);
return 0;
输出是a = 2,b = 1
在if(a++ || b++)里面,a开始是1,这个时候程序不会执行b++,因为不管b是多少,a++ || b++一定是1,计算机不会做多余的部分
#include
int main(){
int a = 0,b = 0;
if(a++ && b++){
}
printf("a = %d,b = %d",a,b);
return 0;
}
输出的是a = 1,b = 0,原因跟上面一样
声明:
本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。