C語言 位運算常用函式實現

2021-10-03 11:43:14 字數 1460 閱讀 3178

如圖:將該二進位制數進行反轉。

解決**:

//位運算反轉

unsigned

intreversbit

(unsigned

int n)

n >>=1;

//處理完1位丟掉1位

}return m;

}

任意給乙個位元組,將其右數第bit位設定為1。

例如:為將50的第右數第3位變為1。

解決**:

//將乙個位元組ch的右數第bit位設定為1,bit從1開始

bool setbit

(char

*ch,

int bit)

*ch |=1

<<

(bit-1)

;return true;

}

任意給乙個位元組,將其右數第bit位設定為0。

例如:將50右數第2位變為0。

解決**:

//將乙個位元組ch的右數第bit位設定為0

bool clearbit

(char

*ch,

int bit)

*ch &=~

(1<<

(bit-1)

);return true;

}

任意給乙個位元組,獲取其第右數第bit位的值。

例如:獲取右數第3位的值0。

解決**:

//獲取右數第bit位的值

inttestbit

(char ch,

int bit)

return

(ch>>

(bit-1)

)&1;

}

方案1:

//統計乙個位元組的資料,二進位制1的個數

intbits1

(unsigned

char ch)

ch >>=1;

}return count;

}

方案2:我們使用x&(x-1),丟棄二進位制右數第乙個1,速度比第乙個快。

int

bits2

(unsigned

char ch)

return count;

}

方案3:查表法:將char型別資料,所有資料維護到乙個資料中,用的時候查表即可。以空間換時間,速度更快。

c語言位運算

c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0 按位或 兩個相應的二進位制位中只要有乙個為1,該位的結果值為1 按位異或 若參加運算的兩個二進位制位值相同則為0,否則為1 取反 是一元運算子,用來對乙個二進位制數按位取反,即將0變1...

C語言位運算

c語言位運算 位運算應用口訣 清零取反要用與,某位置一可用或 若要取反和交換,輕輕鬆鬆用異或 移位運算 1 它們都是雙目運算子,兩個運算分量都是整形,結果也是整形。2 am p 3 amp amp amp qu ot 右 移 右邊 的位被擠 掉。對於 左邊移出 的空位,如果是正 數則空位 補0,若 ...

C語言位運算

位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作 運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位...