前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实用的位运算应用(r4笔记第97天)

实用的位运算应用(r4笔记第97天)

作者头像
jeanron100
发布2018-03-15 16:49:00
5030
发布2018-03-15 16:49:00
举报

对于位运算,之前在一篇博文中分享了一下在c语言和oracle中的位运算实现 http://blog.itpub.net/23718752/viewspace-1440273/ 但是关于位运算的实际应用还是有感觉有些空中楼阁,理论提升到一定的高度,但是实际应用无从下手的话,本身没有太大的实际意义。 教科书中有一个章节是关于位运算的应用,但是其中的例子,感觉不是很通俗,整理了一些小例子,感觉还是比较实用的。 1.变量交换 这个例子在笔试面试中可能还会考到,不需要设置临时变量,怎么快速交换两个变量的值。比如a=100,b=200; 采用下面的方式,就会交换变量的值,最后的输出是200,100

a ^= b;

b ^= a;

a ^= b;

2.数据类型的范围 对于开发语言中的数据类型范围,比如我们说范围是2^31-1,我们可能没有什么概念,我们可以通过位运算来很方便地得到结果。 比如2^31-1的结果,可以采用如下的方式来实现。 (1<<31)-1 结果就是2147483647,这样看起来是不是就清晰多了。 在java中, (1<<31)-1 可以等价于 -(1<<-1) - 1 3.判断奇偶性 可以使用(n & 1) == 1 来判断是否为奇数还是偶数,返回true则为奇数,false则为偶数。 比如我们输入n=56757568,则返回false 4.比较两个数的大小 比较两个数可以通过下面的形式来完成大小的比较,感觉有些复杂,但是算是通用的版本。 y&((x-y)>>31) | x&(~(x-y)>>31) 比如我们输入x=3,y=2 则返回 3 如果需要返回两个数中较小的数,则简单改动一下即可。 x&((x-y)>>31) | x&(~(x-y)>>31) 比如我们输入x=3,y=2,则返回2 5.两个数的平均数 如果需要求得两个数的平均数,可以通过下面的形式来完成。 (x+y) >> 1 如果x=21,y=41, 则平均数的结果为31

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-04-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档