青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

為你寫詩

c/c++
隨筆 - 32, 文章 - 0, 評論 - 3, 引用 - 0
數據加載中……

位運算的用處搜集

位運算應用口訣
清零取反要用與,某位置一可用或
若要取反和交換,輕輕松松用異或
移位運算
要點 1 它們都是雙目運算符,兩個運算分量都是整形,結果也是整形。
  2 " < <" 左移:右邊空出的位上補0,左邊的位將從字頭擠掉,其值相當于乘2。
  3 ">>"右移:右邊的位被擠掉。對于左邊移出的空位,如果是正數則空位補0,若為負數,可能補0或補1,這取決于所用的計算機系統。
  4 ">>>"運算符,右邊的位被擠掉,對于左邊移出的空位一概補上0。
位運算符的應用 (源操作數s 掩碼mask)
(1) 按位與-- &
1 清零特定位 (mask中特定位置0,其它位為1,s=s&mask)
2 取某數中指定位 (mask中特定位置1,其它位為0,s=s&mask)
(2) 按位或-- ¦
  常用來將源操作數某些位置1,其它位不變。 (mask中特定位置1,其它位為0 s=s ¦mask)
(3) 位異或-- ^
1 使特定位的值取反 (mask中特定位置1,其它位為0 s=s^mask)
2 不引入第三變量,交換兩個變量的值 (設 a=a1,b=b1)
  目 標 操 作 操作后狀態
a=a1^b1 a=a^b a=a1^b1,b=b1
b=a1^b1^b1 b=a^b a=a1^b1,b=a1
a=b1^a1^a1 a=a^b a=b1,b=a1
二進制補碼運算公式:
-x = ~x + 1 = ~(x-1)
~x = -x-1
-(~x) = x+1
~(-x) = x-1
x+y = x - ~y - 1 = (x ¦y)+(x&y)
x-y = x + ~y + 1 = (x ¦~y)-(~x&y)
x^y = (x ¦y)-(x&y)
x ¦y = (x&~y)+y
x&y = (~x ¦y)-~x
x==y: ~(x-y ¦y-x)
x!=y: x-y ¦y-x
x < y: (x-y)^((x^y)&((x-y)^x))
x <=y: (x ¦~y)&((x^y) ¦~(y-x))
x < y: (~x&y) ¦((~x ¦y)&(x-y))//無符號x,y比較
x <=y: (~x ¦y)&((x^y) ¦~(y-x))//無符號x,y比較
應用舉例
(1) 判斷int型變量a是奇數還是偶數   
a&1 = 0 偶數
  a&1 = 1 奇數
(2) 取int型變量a的第k位 (k=0,1,2……sizeof(int)),即a>>k&1
(3) 將int型變量a的第k位清0,即a=a&~(1 < <k)
(4) 將int型變量a的第k位置1, 即a=a ¦(1 < <k)
(5) int型變量循環左移k次,即a=a < <k ¦a>>16-k (設sizeof(int)=16)
(6) int型變量a循環右移k次,即a=a>>k ¦a < <16-k (設sizeof(int)=16)
(7)整數的平均值
對于兩個整數x,y,如果用 (x+y)/2 求平均值,會產生溢出,因為 x+y 可能會大于INT_MAX,但是我們知道它們的平均值是肯定不會溢出的,我們用如下算法:
int average(int x, int y) //返回X,Y 的平均值
{   
  return (x&y)+((x^y)>>1);
}
(8)判斷一個整數是不是2的冪,對于一個數 x >= 0,判斷他是不是2的冪
boolean power2(int x)
{
  return ((x&(x-1))==0)&&(x!=0);
}
(9)不用temp交換兩個整數
void swap(int x , int y)
{
  x ^= y;
  y ^= x;
  x ^= y;
}
(10)計算絕對值
int abs( int x )
{
int y ;
y = x >> 31 ;
return (x^y)-y ; //or: (x+y)^y
}
(11)取模運算轉化成位運算 (在不產生溢出的情況下)
  a % (2^n) 等價于 a & (2^n - 1)
(12)乘法運算轉化成位運算 (在不產生溢出的情況下)
  a * (2^n) 等價于 a < < n
(13)除法運算轉化成位運算 (在不產生溢出的情況下)
  a / (2^n) 等價于 a>> n
  例: 12/8 == 12>>3
(14) a % 2 等價于 a & 1   
(15) if (x == a) x= b;
   else x= a;
   等價于 x= a ^ b ^ x;
(16) x 的 相反數 表示為 (~x+1)


實例

  功能 ¦ 示例 ¦ 位運算
----------------------+---------------------------+--------------------
去掉最后一位 ¦ (101101->10110) ¦ x >> 1
在最后加一個0 ¦ (101101->1011010) ¦ x < < 1
在最后加一個1 ¦ (101101->1011011) ¦ x < < 1+1
把最后一位變成1 ¦ (101100->101101) ¦ x ¦ 1
把最后一位變成0 ¦ (101101->101100) ¦ x ¦ 1-1
最后一位取反 ¦ (101101->101100) ¦ x ^ 1
把右數第k位變成1 ¦ (101001->101101,k=3) ¦ x ¦ (1 < < (k-1))
把右數第k位變成0 ¦ (101101->101001,k=3) ¦ x & ~ (1 < < (k-1))
右數第k位取反 ¦ (101001->101101,k=3) ¦ x ^ (1 < < (k-1))
取末三位 ¦ (1101101->101) ¦ x & 7
取末k位 ¦ (1101101->1101,k=5) ¦ x & ((1 < < k)-1)

取右數第k位 ¦ (1101101->1,k=4) ¦ x >> (k-1) & 1

把末k位變成1 ¦ (101001->101111,k=4) ¦ x ¦ (1 < < k-1)
末k位取反 ¦ (101001->100110,k=4) ¦ x ^ (1 < < k-1)
把右邊連續的1變成0 ¦ (100101111->100100000) ¦ x & (x+1)
把右起第一個0變成1 ¦ (100101111->100111111) ¦ x ¦ (x+1)
把右邊連續的0變成1 ¦ (11011000->11011111) ¦ x ¦ (x-1)
取右邊連續的1 ¦ (100101111->1111) ¦ (x ^ (x+1)) >> 1
去掉右起第一個1的左邊 ¦ (100101000->1000) ¦ x & (x ^ (x-1))
判斷奇數 (x&1)==1
判斷偶數 (x&1)==0   

例如求從x位(高)到y位(低)間共有多少個1

public static int FindChessNum(int x, int y, ushort k)
  {
  int re = 0;
  for (int i = y; i <= x; i++)
  {
  re += ((k >> (i - 1)) & 1);
  }
  return re;
  }

posted on 2011-07-26 09:57 pp_zhang 閱讀(489) 評論(0)  編輯 收藏 引用 所屬分類: c/c++

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区二区视频在线观看| 亚洲午夜精品一区二区| 美女主播一区| 久久影院午夜论| 久久久免费av| 免费观看一区| 欧美日韩在线大尺度| 欧美性一区二区| 国产亚洲视频在线| 伊人成年综合电影网| 精品999在线播放| 亚洲精品影视在线观看| 亚洲桃色在线一区| 久久九九免费视频| 亚洲第一主播视频| 亚洲激情一区二区| 亚洲免费在线视频一区 二区| 欧美一区二区三区啪啪| 欧美成人精品h版在线观看| 欧美午夜不卡影院在线观看完整版免费| 国产精品久久久久久久久久直播 | 激情欧美丁香| 欧美在线亚洲综合一区| 久久久久国色av免费观看性色| 蜜臀va亚洲va欧美va天堂| 国产精品www.| 亚洲国产欧美国产综合一区| 亚洲一区国产| 欧美第十八页| 欧美一区二区三区在线观看视频| 欧美电影免费观看大全| 国产欧美一区二区精品秋霞影院| 亚洲人体1000| 久久久夜精品| 夜夜嗨av一区二区三区网站四季av | 欧美色欧美亚洲另类七区| 激情文学综合丁香| 亚洲一区综合| 亚洲日本一区二区| 巨胸喷奶水www久久久免费动漫| 国产精品美女在线观看| 亚洲精品综合| 欧美wwwwww| 久久国产精品99精品国产| 欧美三级在线视频| 亚洲欧洲精品一区二区三区| 久久久久一区| 午夜精品福利在线观看| 欧美视频官网| 亚洲综合国产激情另类一区| 亚洲国产欧美精品| 猫咪成人在线观看| 在线成人黄色| 欧美va天堂在线| 麻豆精品视频在线观看| 精品成人国产| 老司机午夜精品视频在线观看| 欧美一级久久久| 国产一区二区主播在线| 久久精品30| 久久精品一区四区| 激情久久影院| 欧美大片18| 欧美第十八页| 一区二区黄色| 亚洲网址在线| 国产亚洲精品福利| 久久一区二区三区四区| 久久久水蜜桃av免费网站| 亚洲高清免费在线| 亚洲国产一区二区三区a毛片| 欧美成人中文| 亚洲欧美日韩精品久久久| 亚洲女性喷水在线观看一区| 国产专区一区| 亚洲国产黄色| 欧美视频中文一区二区三区在线观看 | 欧美激情综合色| av不卡在线观看| 欧美一区亚洲二区| 午夜精品久久久久久久99热浪潮 | 国产精品视频一| 欧美在线视频导航| 久久久久久久综合色一本| 亚洲国产精品小视频| 亚洲黄色一区| 国产精品综合不卡av | 一本色道久久综合亚洲精品不| 国产精品伦一区| 另类激情亚洲| 欧美日韩三级视频| 久久久久久伊人| 欧美高清日韩| 久久精品亚洲| 欧美日韩和欧美的一区二区| 欧美一区三区三区高中清蜜桃| 久久久久久久久久看片| 一本色道久久综合精品竹菊| 亚洲欧美在线x视频| 91久久久亚洲精品| 亚洲在线1234| 99精品欧美一区二区三区| 先锋资源久久| 日韩一区二区久久| 欧美中文字幕在线观看| 在线亚洲自拍| 久久综合激情| 亚洲欧美日韩专区| 欧美成人情趣视频| 久久精品日产第一区二区| 欧美女同在线视频| 久久午夜影视| 国产精品一区二区三区成人| 最新国产精品拍自在线播放| 国语自产精品视频在线看| 一区二区高清视频| 亚洲精品一区二区三区四区高清| 欧美中文在线视频| 欧美一区二区三区成人| 欧美日韩 国产精品| 欧美福利专区| 一区二区三区在线不卡| 亚洲综合色在线| 亚洲一区日本| 欧美日韩天天操| 日韩视频精品在线观看| 91久久精品国产| 久久综合伊人| 欧美成人dvd在线视频| 激情成人综合| 久久婷婷色综合| 美玉足脚交一区二区三区图片| 国产视频综合在线| 香蕉免费一区二区三区在线观看| 亚洲欧美日韩另类| 国产精品日韩欧美大师| 中文精品一区二区三区| 亚洲自拍偷拍麻豆| 欧美亚一区二区| 亚洲天堂第二页| 国产精品热久久久久夜色精品三区 | 久久久久综合一区二区三区| 国产精品久久影院| 亚洲欧美第一页| 久久久精品网| 曰韩精品一区二区| 男人天堂欧美日韩| 亚洲国产欧美一区二区三区丁香婷| 91久久精品一区| 欧美天天影院| 午夜精品久久久久久99热软件| 欧美亚洲视频在线观看| 国产一区二区精品久久99| 久久国产主播精品| 亚洲国产成人久久综合一区| 99re视频这里只有精品| 欧美四级电影网站| 亚洲欧美日韩爽爽影院| 另类亚洲自拍| 99亚洲一区二区| 国产欧美日韩免费看aⅴ视频| 欧美伊人久久大香线蕉综合69| 欧美www视频在线观看| 亚洲一级在线观看| 极品尤物av久久免费看| 欧美国产精品久久| 亚洲一区在线免费观看| 玖玖玖国产精品| 一级日韩一区在线观看| 国产日韩欧美在线播放| 欧美成人a视频| 亚洲永久免费精品| 亚洲韩国日本中文字幕| 欧美一区二区视频在线观看2020| 欲色影视综合吧| 国产精品一二三视频| 欧美不卡三区| 亚洲欧美清纯在线制服| 亚洲国产一区二区精品专区| 欧美一区午夜精品| 一区二区三区你懂的| 韩国三级在线一区| 国产精品播放| 欧美激情一二区| 久久精品国亚洲| 亚洲一区在线免费| 日韩亚洲欧美成人一区| 美女在线一区二区| 久久激情视频| 亚洲专区免费| 99亚洲一区二区| 亚洲国产专区| 狠狠色丁香久久婷婷综合丁香| 欧美特黄一区| 欧美精品www| 免费观看国产成人| 久久精品中文字幕免费mv| 亚洲影院一区| 亚洲小视频在线| 日韩视频国产视频|