程式設計中用到的一些演算法

2021-09-30 06:59:04 字數 1522 閱讀 5524

1.取任意位:#define bit(a,b)      ((a>>b)&0x01)   // a is the variable while

// b is the bit number 從第0位數起,而不是從第1位數起

2.取十進位制i各位上的數給a[n],

a[0]=i%10;

a[1]=i%100/10;

a[2]=i%1000%100;

3.取反運算

i^=1;//將i取反.

4.#define setbit(port,n)  (port|=(1<  

#define clrbit(port,n)  (port&=~(1<  

#define reverbit(port,n)  (port^=(1<  

#define getbit(pin,n)   ((pin>>n)&0x01)   //讀取io某一位 

4.埠操作:

#define led1 ( *((u32*)0x42210180) )

5.位運算

一、位運算應用口訣

清零取反要用與,

某位置一可用或;

若要取反和交換,

輕輕鬆鬆用異或。 二、

移位運算 1.

「<<

」左移:左邊的位將從字頭擠掉,右邊的空出位補

0。左移幾位,相當於乘以二的幾次方。 2.

「>>

」右移:右邊的位將從字頭擠掉,左邊空出的位若是正數補

0,若是負數,可能補1或補

0相當於除以

2的幾次方。 3.

按位與&:a

、清零特定位eg:

x=101101

將第四位清零

x&~(1<<(4-1))

b、取某數中的指定位eg:

x=101101

取第三x>>(3-1)&1

4.按位或1:

常數某位置

1,其它不變

eg:x=101101

將第二位置

1x |

(1<<2-1)

5.按位異或^:

a、使特定位取反

eg: x=101101 末5

位置1x^(

1<<

(5-1))b

、不引入第三變數,交換兩個變數的值

eg: void swap (int x, int y)

三、應用舉例 1.

將char

型變數迴圈左移k次

a=a<>8-k

迴圈右移k次

a=a>>k | a<<8-k

2.求平均值(不產生溢位),求x、

y的平均值: (

x&y)+((

x^y)

>>1)

3.取模運算:a%(

2的n次方)

óa&(2

的n-1次方)

4.判斷奇數

(x&1

)==1

判斷偶數

(x&1

)==0

競賽中用到的一些STL

memset a,0,sizeof a 陣列初始化為0 memset b,1,sizeof b 陣列初始化為 1不使用cmp 在上公升序列中找第乙個比k大的 使用cmp 在下降序列中找第乙個比k小的 兩者預設都是從前向後找,lower更靠前,找到的可以等於k bool cmp int a,int b...

php data 函式中用到的一些常量

今天在網上找到了一些,記錄下來留著下次參考 date atom string 原子鐘格式 如 2005 08 15t15 52 01 00 00 date cookie string http cookies 格式 如 mon,15 aug 2005 15 52 01 utc date iso860...

mysql中用到的一些sql語句

檢視資料庫預設配置資訊 show variables 檢視mysql資料庫編碼方式 show variables like character set database 檢視資料庫裡表的編碼方式,同時還能看到該錶使用的儲存引擎資訊 show create table char test 修改資料庫編...