C/C++位运算

  • C/C++ 中的位运算一共5种:与,或,异或,左移,右移。如下:
    1.按位与运算:
    0 & 0 = 0
    1 & 0 = 0
    0 & 1 = 0
    1 & 1 = 1
    2.按位或运算:
    0 | 0 = 0
    0 | 1 = 1
    1 | 0 = 1
    1 | 1 = 1
    3.异或:
    1 ^ 1 = 0
    0 ^ 0 = 0
    1 ^ 0 = 1
    0 ^ 1 = 1
    4.左移:
    00001010 << 2 = 00101000 每一位左移两位,右边多余出来的部分补0
    11000101 << 2 = 00010100
    5.右移:
    10101001 >> 2 = 00101010 每一位右移两位, 左边多余的部分补0
    11110000 >> 3 = 00011110
  • 左移和右移符号可以用于乘除运算
    21 = (00010101)
    21 >> 1 = (00001010) = 10 相当于 21/2
    21 << 1 = (00101010) = 42 相当于 21*2 
  • & 可以用来求一个整数二进制中1的个数
    int count = 0;
    while(number){
      count = count++;
      number = number & (number-1) // 该运算使number右边的第一个1置0
    }
全部评论

相关推荐

头像
11-27 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗?&nbsp;刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务