Hopes

          Start Here..

           

          用移位實現乘除法運算

          用移位實現乘除法運算
               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

          關于除法讀者可以類推, 此略

          posted on 2013-11-11 19:06 ** 閱讀(637) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          公告

          你好!

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章分類

          文章檔案

          新聞檔案

          相冊

          收藏夾

          C#學習

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 青岛市| 务川| 平舆县| 锡林郭勒盟| 和平区| 甘德县| 武威市| 杭州市| 黄梅县| 留坝县| 长治县| 南安市| 剑阁县| 河池市| 丰都县| 垫江县| 柘荣县| 灵石县| 苗栗县| 榕江县| 宜章县| 金门县| 东乡| 玉林市| 永安市| 汉阴县| 安阳市| 黑龙江省| 玛多县| 林口县| 若羌县| 东至县| 湟中县| 上饶县| 个旧市| 车致| 额尔古纳市| 富民县| 札达县| 宣汉县| 正定县|