C语言位操作符常用小技巧分享

中科白癜风暖心公益活动 http://baijiahao.baidu.com/s?id=1699994023356023855&wfr=spider&for=pc
位操作符的一些运算小技巧

本文主要介绍一些会经常使用到的位操作小技巧。

使用位操作符时有以下两点需要注意

进行位运算时数据全部是换算为二进制的。

位操作符只适用于整形变量,不适合浮点数变量。(本质是由于两者的数据存储类型不同)

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工作原理详解

软件设计—工厂模式详解

预览时标签不可点收录于合集#个上一篇下一篇

转载请注明:http://www.aierlanlan.com/rzfs/201.html