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

偷拍亚洲色图,色av一区二区,亚洲色图第一页,一级做a爰片久久

TDA2030功放電路圖 電動車充電器電路圖 電子電路 功放電路 電子制作 集成塊資料 電子報 pcb 變壓器 元器件知識 逆變器電路圖 電路圖 開關電源電路圖 傳感器技術 led 電磁兼容
電子電路圖
當前位置: 首頁 > 電子電路 > 設計編程

介紹單片機C51位運算應用技巧

時間:2018-11-23 08:44:09來源:網絡 作者:admin 點擊:
介紹單片機C51位運算應用技巧

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

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

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

  (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)

  (17) 實現最低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)設s不等于全0,代碼尋找最右邊為1的位的序號j:

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

容-源-電-子-網-為你提供技術支持

本文地址:http://www.ytjinfuren.com/dz/22/15429340782606.shtml


本文標簽:


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

------分隔線----------------------------
發表評論
請自覺遵守互聯網相關的政策法規,嚴禁發布色情、暴力、反動的言論。
表情:
名稱: E-mail: 驗證碼: 匿名發表
發布文章,推廣自己產品。
熱門標簽
 
主站蜘蛛池模板: 翼城县| 蓬莱市| 定结县| 清丰县| 祁连县| 恩施市| 棋牌| 新蔡县| 丹江口市| 衡阳市| 通州市| 周至县| 罗源县| 红河县| 晋州市| 宁晋县| 民县| 盐边县| 自贡市| 尤溪县| 行唐县| 巩留县| 和平区| 泸州市| 乾安县| 丁青县| 彭山县| 濮阳县| 申扎县| 莎车县| 柳州市| 化德县| 东至县| 鲜城| 丰都县| 牡丹江市| 克什克腾旗| 湛江市| 桑日县| 睢宁县| 德兴市|