这一节主要说的是位运算,计算机中的执行速度:位运算 > 加减 > 乘除 > 求余
位运算就是将数字转换成二进制后进行运算,之后再将数字转换成原来的进制
与运算:当两个数相与时,只有都为l的时候结果才为1,其余情况结果都为0,符号 &
#includeint 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,原因跟上面一样
声明:
本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。