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

对于位运算,之前在一篇博文中分享了一下在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

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2015-04-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏木可大大

编写优雅代码的最佳实践

Robert Martin曾说过"在代码阅读中说脏话的频率是衡量代码质量额唯一标准"。同时,代码的写法应当使别人理解它所需的时间最小化,也就是说我们写的代码是给...

10320
来自专栏老马说编程

计算机程序的思维逻辑 (9) - 强大的循环

循环 上节我们介绍了流程控制中的条件执行,根据具体条件不同执行不同操作。本节我们介绍流程控制中的循环,所谓循环就是多次重复执行某些类似的操作,这个操作一般不是...

22180
来自专栏小李刀刀的专栏

[译]Laravel 5.0 之 Eloquent 属性转换

本文译自 Matt Stauffer 的系列文章. ---- 之前完全忘了要把这个 Laravel 5 的系列博客写完,不过最近看到了一篇关于属性转换的简介 L...

44480
来自专栏老九学堂

1分钟彻底理解C语言指针的概念

计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如 int 占用4个字节,char 占用1个字节。为了正确地访问这些数据,必须为每个字节...

53580
来自专栏take time, save time

你所能用到的数据结构(九)

十二、为了count的最终胜利 在介绍完最基本的堆栈模型之后,下面要继续的是第二种最基本的模型,队列。队列,在现实生活中经常可以看到(不过考虑到在我国大部分人...

29570
来自专栏猿人谷

oc 中随机数的用法(arc4random() 、random()、CCRANDOM_0_1()

1)、arc4random() 比较精确不需要生成随即种子        使用方法 :                  通过arc4random() 获取0到...

26180
来自专栏西枫里博客

PHP对数组进行排序操作

昨天别人问了我一个问题,瞬间把我给问懵了。事情是这样的,问我给到一个既定数组,现在让我实现下将数组元素从低到高升序排列。第一个反应是直接使用ksort之类排序函...

7610
来自专栏用户1191492的专栏

物联网平台设计文档:精简GC(垃圾回收)

许多高级编程语言的自动内存管理功能让编程变成了比较容易的一件事。然而,嵌入式平台经常缺少这一部分功能,这是有原因的:现代垃圾收集(GC)系统使用的...

30350
来自专栏用户2442861的专栏

近一个月的面试总结 分类:JAVA

本文转载自:http://blog.csdn.net/pistolove/article/details/46753275

14220
来自专栏IT可乐

深入理解计算机系统(2.1)------信息的存储和表示

  前面我们介绍了《深入理解计算机系统》第一章的内容----计算机系统漫游。包括简单介绍了 Hello World 程序在计算机中是如何运行的,存储设备的层次结...

24880

扫码关注云+社区

领取腾讯云代金券