本文主要介绍一些会经常使用到的位操作小技巧。
使用位操作符时有以下两点需要注意
进行位运算时数据全部是换算为二进制的。
位操作符只适用于整形变量,不适合浮点数变量。(本质是由于两者的数据存储类型不同)
1.交换两个变量的值inta=1;intb=2;a^=b;b^=a;a^=b;printf("a:%db:%d\n",a,b);2.求二进制中1的个数
inta=5;intcount=0;while(a){a=a(a-1);//每次把最低位丢弃,直到a为0.count++;}printf("%d\n",count);3.求二进制中0的个数
inta=5;intcount=0;while(a+1){a=a
(a+1);count++;}printf("%d\n",count);4.求一个数的绝对值
inti=-2;intj=i31;i=(i^j)-j;printf("%d\n",i);5.求一个数的相反数
inti=-2;i=~i+1;printf("%d\n",i);6.判断一个数的奇偶性
inta=3;if((a1)==1){printf("奇数\n");}else{printf("偶数\n");}7.求两个数的平均数
inta=3;intb=7;printf("平均值:%d\n",((a+b)1));8.从无符号类型x的第p位开始,取n位数
unsignedGetBits(unsignedx,intp,intn){return(x(p+1-n))~(~0n);}推荐阅读
Linux大神都是怎么记住这么多命令的?
你真的会用二极管吗?
STM32时钟详解
一键生成代码说明书
电路图识图心得及电路分析方法
STM32GPIO工作原理详解
软件设计—工厂模式详解
预览时标签不可点收录于合集#个上一篇下一篇