位运算相关

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了位运算相关相关的知识,希望对你有一定的参考价值。

位运算符/移位运算符

运算符

  • &运算符

    操作数1的位操作数2的位&的结果位
    1 1 1
    1 0 0
    0 1 0
    0 0 0
  • |运算符

    操作数1的位操作数2的位&的结果位
    1 1 1
    1 0 1
    0 1 1
    0 0 0
  • ^运算符

    操作数1的位操作数2的位^的结果位
    1 1 0
    1 0 1
    0 1 1
    0 0 0
  • ~运算符

    操作数的位~的结果位
    1 0
    0 1

移位运算符

  • 原因:
    主要用于高度优化的代码,在这些代码中,使用其他数据操作的开销太高了

  • 示例:

    int var1, var2 = 10, var3 = 2;
    var1 = var2 << var3;
  • 结果:
    var1 = 40。
    具体过程如下:10的二进制值是1010,把该数值向左移动两位,得到0010 1000,即十进制中的40
  • 快速记忆

   向左位移:等于当前的值乘以移动位数再乘以2

var1 = var2 << var3;
var1 = var2 * var3 * 2
// var1 = 10 * 2 * 2 = 40

   向右位移:等于当前的值除以移动位数再除以2,最后舍去非整数部分

var1 = var2 >> var3;
var1 = var2 / (var3 * 2)
// var1 = 10 / ( 2 * 2) = 2.5
// 然后小数部分被丢弃var1 = 2
// 向右位移操作的时候非整数部分直接丢弃

以上是关于位运算相关的主要内容,如果未能解决你的问题,请参考以下文章

位运算相关

位运算符相关

位运算相关内容整理

LeetCode-位运算相关题解

位运算相关知识点详细总结

c11---位运算相关