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

為你寫詩

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>
            久久不见久久见免费视频1| 国产视频精品va久久久久久| 亚洲一级黄色| 日韩视频在线一区二区三区| 亚洲国产欧美另类丝袜| 亚洲高清久久久| 欧美fxxxxxx另类| 久久久久久久尹人综合网亚洲| 午夜精品一区二区三区四区| 亚洲自拍16p| 欧美一区2区视频在线观看| 久久久久久久久综合| 美脚丝袜一区二区三区在线观看 | 国产精品久久777777毛茸茸| 久久偷看各类wc女厕嘘嘘偷窃| 久久久久久夜| 国产精品yjizz| 国产精品久久久久秋霞鲁丝| 亚洲国产免费| 一区二区三区四区五区精品| 欧美一级久久| 久久资源av| 欧美日韩美女在线观看| 国产精品网曝门| 亚洲成人在线| 性欧美videos另类喷潮| 久久精品30| 亚洲精品三级| 午夜精品在线| 欧美成人精品| 国产婷婷精品| 一本色道久久综合狠狠躁的推荐| 久久激情视频久久| 亚洲品质自拍| 久久尤物电影视频在线观看| 国产精品视频xxxx| 中文精品99久久国产香蕉| 免费观看成人| 欧美一二三区在线观看| 欧美视频在线不卡| 99re6热只有精品免费观看| 久久综合中文| 欧美永久精品| 国产精品私房写真福利视频| 99视频精品全部免费在线| 欧美69视频| 久久精品夜色噜噜亚洲a∨| 国产精品综合久久久| 一区二区三区视频在线| 亚洲激情国产精品| 欧美成人性生活| 亚洲激情电影在线| 免费欧美视频| 久久综合色婷婷| 亚洲国产1区| 欧美va天堂在线| 老牛影视一区二区三区| 禁断一区二区三区在线 | 亚洲午夜羞羞片| 欧美福利视频网站| 欧美.com| 一本色道久久综合狠狠躁篇怎么玩 | 国产精品初高中精品久久| 99国产精品久久久久久久久久| 欧美国产日本韩| 欧美极品欧美精品欧美视频| 99re6这里只有精品视频在线观看| 亚洲国产成人在线| 欧美精品综合| 亚洲欧美日韩综合一区| 亚洲一区3d动漫同人无遮挡| 欧美一区二区三区视频在线 | 一区二区久久久久久| 最新亚洲视频| 欧美丝袜一区二区| 欧美一级大片在线观看| 午夜激情久久久| 国产资源精品在线观看| 猛男gaygay欧美视频| 欧美二区乱c少妇| 99天天综合性| 亚洲免费在线播放| 在线观看亚洲视频| 亚洲理论电影网| 国产免费观看久久| 欧美国产另类| 欧美日韩精品在线视频| 久久精品1区| 欧美伦理在线观看| 久久精品一级爱片| 欧美国产大片| 欧美中文字幕久久| 欧美好骚综合网| 久久精品成人一区二区三区蜜臀| 久久精品女人的天堂av| 99www免费人成精品| 亚洲欧美日韩另类| 亚洲理论电影网| 欧美一区二区三区男人的天堂 | 亚洲欧美日韩精品久久久久| 亚洲国产精品va在线观看黑人 | 欧美欧美在线| 久久久久久久性| 欧美视频在线不卡| 欧美激情aaaa| 国产婷婷色一区二区三区四区| 91久久亚洲| 在线观看国产成人av片| 亚洲午夜精品国产| 99re热这里只有精品视频| 久久黄色影院| 亚洲欧美三级伦理| 欧美日韩另类字幕中文| 你懂的视频欧美| 国产性猛交xxxx免费看久久| 亚洲伦理自拍| 亚洲人成网站在线播| 久久久精彩视频| 久久高清国产| 国产精品一区二区三区成人| 亚洲免费电影在线| 日韩午夜中文字幕| 蜜桃视频一区| 欧美福利视频一区| 亚洲国产精品va| 猛干欧美女孩| 欧美激情第三页| 在线免费观看成人网| 99成人在线| 欧美午夜视频在线| 欧美成人精品在线观看| 国产在线日韩| 亚洲欧美另类国产| 欧美亚洲视频| 国产美女一区二区| 亚洲欧美日韩国产成人| 亚洲欧美日韩精品在线| 国产精品户外野外| 在线综合亚洲| 午夜在线成人av| 国产精品你懂得| 小处雏高清一区二区三区 | 你懂的网址国产 欧美| 母乳一区在线观看| 亚洲国产精品久久精品怡红院 | 亚洲欧美日韩国产综合在线 | 久久综合电影一区| 亚洲国产二区| 中日韩高清电影网| 国产精品一区二区三区四区五区| 亚洲一区国产| 久久久亚洲一区| 最新69国产成人精品视频免费| 欧美韩国日本综合| 亚洲色无码播放| 久久久综合网| 亚洲国产裸拍裸体视频在线观看乱了| 欧美插天视频在线播放| 99re这里只有精品6| 欧美制服丝袜第一页| 激情国产一区| 欧美日韩国产一区二区三区地区| 这里是久久伊人| 久久xxxx精品视频| 91久久精品国产91久久性色tv| 欧美日韩日本视频| 欧美一区二区三区精品电影| 亚洲高清激情| 亚洲天堂视频在线观看| 国产一区二区视频在线观看| 久热精品在线视频| 亚洲欧美激情精品一区二区| 免费成人在线视频网站| 亚洲主播在线观看| 亚洲国产日韩欧美| 国产欧美午夜| 欧美深夜影院| 欧美成人福利视频| 久久久久9999亚洲精品| 日韩天天综合| 欧美激情一区三区| 久久精品国产精品亚洲综合 | 午夜久久电影网| 亚洲第一福利视频| 国产无一区二区| 欧美先锋影音| 欧美激情一区二区| 久久久噜噜噜久久人人看| 亚洲影院免费观看| 亚洲欧洲美洲综合色网| 久久偷看各类wc女厕嘘嘘偷窃| 欧美韩日亚洲| 亚洲欧美久久久久一区二区三区| 黄色一区二区在线| 国产日本亚洲高清| 欧美三日本三级少妇三2023| 久久全球大尺度高清视频| 欧美在线日韩在线| 欧美一区二区啪啪| 欧美在线国产精品|