位運算應(yīng)用口訣:  清零取位要用與,某位置一可用或,若要取反和交換,輕輕松松用異或!  移位運算要點  1 它們都是雙目運算符,兩個" />
TDA2030功放電路圖 電動車充電器電路圖 電子電路 功放電路 電子制作 集成塊資料 電子報 pcb 變壓器 元器件知識 逆變器電路圖 電路圖 開關(guān)電源電路圖 傳感器技術(shù) led 電磁兼容
電子電路圖
當(dāng)前位置: 首頁 > 電子電路 > 設(shè)計編程

介紹單片機(jī)C51位運算應(yīng)用技巧

時間:2018-11-23 08:44:09來源:網(wǎng)絡(luò) 作者:admin 點擊:
介紹單片機(jī)C51位運算應(yīng)用技巧

位運算應(yīng)用口訣:  清零取位要用與,某位置一可用或,若要取反和交換,輕輕松松用異或!  移位運算要點  1 它們都是雙目運算符,兩個

  (4) 將int型變量a的第k位置1, 即a=a|(1<

  (5) int型變量循環(huán)左移k次,即a=a<

  (6) int型變量a循環(huán)右移k次,即a=a>>k|a<<16-k (設(shè)sizeof(int)=16)(7)整數(shù)的平均值

  對于兩個整數(shù)x,y,如果用 (x+y)/2 求平均值,會產(chǎn)生溢出,因為 x+y 可能會大于INT_MAX,但是我們知道它們的平均值是肯定不會溢出的,我們用如下算法:

  int average(int x, int y) //返回X,Y 的平均值{

  return (x&y)+((x^y)>>1);

  }

  (8)判斷一個整數(shù)是不是2的冪,對于一個數(shù) x >= 0,判斷他是不是2的冪boolean power2(int x)

  {

  return ((x&(x-1))==0)&&(x!=0);

  }

  (9)不用temp交換兩個整數(shù)

  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)取模運算轉(zhuǎn)化成位運算 (在不產(chǎn)生溢出的情況下):a % (2^n) 等價于 a & (2^n - 1)(12)乘法運算轉(zhuǎn)化成位運算 (在不產(chǎn)生溢出的情況下):a * (2^n) 等價于 a<< n(13)除法運算轉(zhuǎn)化成位運算 (在不產(chǎn)生溢出的情況下):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 的 相反數(shù)表示為 (~x+1)

  (17) 實現(xiàn)最低n位為1,其余位為0的位串信息:~(~0 << n)(18)截取變量x自p位開始的右邊n位的信息:(x >> (1+p-n)) & ~(~0 << n)(19)截取old變量第row位,并將該位信息裝配到變量new的第15-k位:new |= ((old >> row) & 1) << (15 – k)(20)設(shè)s不等于全0,代碼尋找最右邊為1的位的序號j:

  for(j = 0; ((1 << j) & s) == 0; j++) ;

容-源-電-子-網(wǎng)-為你提供技術(shù)支持

本文地址:http://m.4811775.com/dz/22/15429340782606.shtml


本文標(biāo)簽:


.
首頁 上一頁12
頂一下
0%
返回首頁
0
0%

------分隔線----------------------------
發(fā)表評論
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動的言論。
表情:
名稱: E-mail: 驗證碼: 匿名發(fā)表
發(fā)布文章,推廣自己產(chǎn)品。
熱門標(biāo)簽