C语言知识归纳笔记
知识点一:&和&&、|和|| 用法区分
&是位与&&是逻辑与¦是位或¦¦是逻辑或
&和| 称为布尔运算符,&&和|| 称为条件布尔运算符。
1.&的取值/清零(保留值/清零)用法:
&可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。含f的保留,含0即清除;
例如:a &= ~(0x01 <<3) //清除a的bit3即将第3位设置为0
2.&&判断条件用法:
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。例如,if(i!=1&&j!=1)break; 即如果i或者j不等于1就跳出程序,同时满足就不执行break。
3.|的用法:
有1为1,全0为0 例如:0|1=1 0|0=0
例如:a |= (0x01 << 3) //设置a的bit3即将第3位设置为1
4.||判断条件用法:
如果第一个操作数是true,||运算符就返回true,无需考虑第二个操作数的值。
5.用作算法:
效率最高的算法
a=b*2 ---> a=b<<1; //左乘右除 移一位2,移两位4,移3位8。
a=b/4 ---> a=b>>2;
a=b%8 ----> a=b&7;
a=b/8*8+b%4 -----> a=((b>>3)<<3)+(b&3)
a=b*15 ------> a=(b<<4)-b