按位运算

  1. 与运算&
    对于一个正整数x来说,对x进行 x&(x-1)操作其实就是将x的二进制表示法中最后一个1换成0,以下代码可以对x的二进制表示的1的个数进行统计
    Java
    public static int num1(int x) {
    int count = 0;
    while (x > 0) {
    count++;
    x = x & (x - 1);
    }
    return count;
    }
相似地,x|(x+1)操作是将x的二进制表示法中的最后一个0换成1.

2.异或运算 ^
相同得0 ,相异得1;
对任意整数a,b, c有 :
0^a = a;  a^a =0;  a^b = b^a;   a^b^c = a^(b^c)
- 异或运算交换两个值:
```Java```
a = a^b ;
b = a^b;     // b =a^b^b = a
a = a^b;     // a = a^b^a = b
  • 异或运算解single num 问题 (leetcode 136):Given an array of integers, every element appears twice except for one. Find that single one.
    Java
    public int singleNumber(int[] nums) {
    int a = nums[0];
    for(int i = 1; i< nums.length; i++){
    a = a^nums[i];
    }
    return a;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容