1. 程式人生 > >C++ 位運算

C++ 位運算

除法 右移 代碼 生成 次方 運算 效率 因此 左移

用移位實現乘除法運算
  a=a*4;
  b=b/4;
  可以改為:
  a=a<<2;
  b=b>>2;
  說明:
  除2 = 右移1位 乘2 = 左移1位
  除4 = 右移2位 乘4 = 左移2位
  除8 = 右移3位 乘8 = 左移3位
  ... ...
  通常如果需要乘以或除以2的n次方,都可以用移位的方法代替。
  大部分的C編譯器,用移位的方法得到代碼比調用乘除法子程序生成的代碼效率高。
  實際上,只要是乘以或除以一個整數,均可以用移位的方法得到結果,如:
  a=a*9
  分析a*9可以拆分成a*(8+1)即a*8+a*1, 因此可以改為: a=(a<<3)+a

  a=a*7
  分析a*7可以拆分成a*(8-1)即a*8-a*1, 因此可以改為: a=(a<<3)-a

C++ 位運算