2026/2/17 14:07:36
网站建设
项目流程
高端网站建设方案模板范文,安康市信息平台,东莞学校网站建设,最近重大新闻头条C语言学习笔记#xff08;8#xff09;#xff1a;位运算符、、-- 运算符的用法
一、位运算符#xff08;Bitwise Operators#xff09;
C语言提供了6个位运算符#xff0c;用于直接操作整数的二进制位#xff08;bit#xff09;。常用于底层编程、嵌入式、性能优化等…C语言学习笔记8位运算符、、-- 运算符的用法一、位运算符Bitwise OperatorsC语言提供了6个位运算符用于直接操作整数的二进制位bit。常用于底层编程、嵌入式、性能优化等场景。运算符名称用法示例说明二进制示例假设 a5 (0101), b3 (0011)按位与a b对应位都为1才为1否则为00101 0011 00011按位或ab^按位异或a ^ b对应位不同为1相同为00101 ^ 0011 01106~按位取反~a所有位翻转0变11变0~0101 1010补码表示-6左移a n所有位向左移动n位低位补00101 1 101010右移a n所有位向右移动n位有符号数高位补符号位无符号补00101 1 00102实用技巧示例判断奇偶数比 %2 更快if(num1)printf(奇数);elseprintf(偶数);交换两个数不用临时变量a^b;b^a;a^b;清除最低位的1常用于位操作题numnum(num-1);// 例如 0100 0011 0000获取最低位的1lowest_bitnum-num;// 补码技巧快速乘2 / 除2xx1;// x * 2xx1;// x / 2无符号数或正数二、 和 – 运算符自增自减运算符名称用法示例说明执行顺序与返回值自增i或i将变量值加1前置先加后用返回加后的值后置先用后加返回原值--自减--i或i--将变量值减1同上关键区别前置 vs 后置inta5;intba;// 前置a先加1变成6然后b6printf(a%d, b%d\n,a,b);// 输出 a6, b6intc5;intdc;// 后置先把c的原值5赋给d然后c再加1printf(c%d, d%d\n,c,d);// 输出 c6, d5常见陷阱容易出错的代码inti1;printf(%d\n,ii);// 未定义行为不同编译器结果不同禁止这样写intj1;jj;// 未定义行为结果不确定正确使用建议单独一行使用时前置后置无区别如i;或i;都行。表达式中混用时尽量避免容易造成未定义行为Undefined Behavior。推荐风格单独一行写i表达式中用i更明确。循环中的经典用法for(inti0;i10;i){// i 等价于 i i 1printf(%d ,i);}// 输出 0 1 2 ... 9三、总结对比运算符类型运算符优先级结合性常见用途位运算~高右取反、位掩码 次高左移位、快速乘除中左取特定位、清除位^中左异或交换、校验|低左设置位自增自减 –最高右计数器、循环控制学习建议位运算多练习二进制转换理解每位操作。自增自减记住“前置先加后用后置先用后加”避免在复杂表达式中混用。实际项目中位运算常用于驱动开发、加密、算法优化±- 则是日常最常用。掌握这两部分你对C语言的底层控制能力会大幅提升下一节可以继续学习条件运算符和逗号运算符。