首页 > 其他 > 详细

位运算

时间:2014-03-27 01:21:10      阅读:354      评论:0      收藏:0      [点我收藏+]

位操作详解

我们先来看看位运算操作符:& (按位与)| (按位或)^ (按位异或)~ (按位取反)>> (按位右移)<< (按位左移)

 

1&(按位与) 从概念上来讲,就是将参与运算的两个分量对应的每一位来做逻辑与运算,若两者都为真(等于1),则结果才为真(等于1)。否则都为假(等于0)。

即:1 & 1 = 1 1&0 = 0 0&1 = 10&0 = 0

这里我们先来看看那一个8位二进制的例子:

7&8 = 0000 0111 & 0000 1000 = 0000 0000 = 0

7&6 = 0000 0111 & 0000 0110 = 0000 0110 = 6

2| (按位或即把参与运算的每个分量对应的每一位来做逻辑或运算,即两者都为假(为0)时,才为假(为0),否则皆为真。

即:0|0 = 01|0 = 10|1 = 11|1 = 1

来看看8位二进制的例子:

7|8 = 0000 0111 | 0000 1000 = 0000 1111 = 15

7|6 = 0000 0111 | 0000 0110 = 0000 0111 = 7

 

3^(按位异或即把参与运算的每个分量对应的每一位来做异或运算,即两者相同为假,不同为真。

即:0|0 = 0、 1|0 = 10|1 = 1、 1|1 = 0

看下面的例子:

7^8 = 0000 0111 ^ 0000 1000 = 0000 0111 = 7

7^6 = 0000 0111 ^ 0000 0100 = 0000 0011 = 3

 

4~(按位取反) 即把二进制位的每一位进行取反运算,简而言之就是1变成00变成1

直接看例子:

~7 = ~0000 0111 = 1111 1000 = 248

 

>>(按位右移)把二进制位整体向右移动。

7>>1 = 0000 0111 >> 1 = 0000 0011 = 3

7>>2 = 0000 0111 >> 2 = 0000 0001 = 1

这里右移等于除了2N次方,N为右移的位数。

 

<<(按位左移)这里就不详细说了,和右移相反。

 

位运算比乘除法效率高,所以乘以除以2时可用位操作。尽量不要对int型负数进行按位移操作。

 

 

位运算,布布扣,bubuko.com

位运算

原文:http://blog.csdn.net/chuchus/article/details/22208081

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!