1. 程式人生 > >位運算相關

位運算相關

使用 優化 lin 位數 pan ble 移位 移動 等於

位運算符/移位運算符

運算符

  • &運算符

    操作數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 // 向右位移操作的時候非整數部分直接丟棄

位運算相關