常用技巧 —— 位运算 —— 位运算的应用
生活随笔
收集整理的這篇文章主要介紹了
常用技巧 —— 位运算 —— 位运算的应用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.lowbit:計算一個數字 x 二進制下最低位 1 對應的值
方法:
int lowbit(int x){return x&(-x); }lowbit 利用了補碼的特性:正數的補碼是其自身,負數的補碼是正數按位取反后加一
例如:10 的補碼是 1010,-10 的補碼是 0110,按位相與后,即可得到 x 二進制下最低位 1 對應的值,即 lowbit(10)=2
2.判斷一個數字 x 二進制下的第 i 位是不是等于 1
方法:
if( ( 1<<(i-1) ) & x )將 1 左移 i-1 位,相當于制造了一個只有第 i 位上是 1,其他位上都是 0 的二進制數,然后與 x 與運算,如果結果大于 0,說明 x 第 i 位上是 1,反之為 0
3.將一個數字 x 二進制下第 i 位改為 1
方法:
x = x | (1<<(i-1))將 1 左移 i-1 位,相當于制造了一個只有第 i 位上是 1,其他位上都是 0 的二進制數,然后與 x 或運算即可
4.把一個數字 x 二進制下最靠右的第一個 1 去掉。
方法:
x = x & (x-1)5.計算一個數字 x 二進制下含有 1 或 0 的個數
int num=0; while(x){x = x & (x-1);num++; }6.判斷一個數 x 是否為 2 的 n 次方
bool judge(int x) {if( (x & (x-1)) == 0)return true;elsereutrn false; }總結
以上是生活随笔為你收集整理的常用技巧 —— 位运算 —— 位运算的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数楼梯(洛谷-P1255)
- 下一篇: Lilypad Pondg(POJ-31