如圖:將該二進位制數進行反轉。
解決**:
//位運算反轉
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,則該位...