位運算技巧

2021-09-29 14:23:44 字數 971 閱讀 8519

數字和1相與 判斷奇偶

x&1=1 奇數

x&1=0 偶數

不用其他空間交換兩值

a=a^b;

b=a^b;

a=a^b;

或a=a+b;

b=a-b;

a=a-b;

a^0=a a^a=0

不用其他空間找陣列中唯一成對的那個數

int b=0;

for(int i=1;i<10;i++)

int a[10]=;

for(int i=0;i<10;i++)

printf("%d",b);

}找出落單的那個數

陣列中的數字依次異或

二進位制中1的個數

int n;

int count=0;

scanf("%d",&n);

for(int i=0;i<32;i++)

}printf("%d ",count);

}(x-1)&x 消掉x最低位上的1

int n;

int count=0;

scanf("%d",&n);

while(n!=0)

printf("%d ",count);

}用一條語句判斷乙個整數是不是2的整數次方(二進位制中只有乙個1)

即(n-1)&n==0

將二進位制的奇偶位互換

int n;

scanf("%d",&n);

int a=n&0xaaaaaaaa;

int b=n&0x55555555;

int c=(a>>1)^(b<<1);

printf("%d",c);

}0~1間浮點實數的二進位制表示

位運算技巧

1.lowbit x 實現 int lowbit int x 這個函式用來求數中二進位制位中最低位的1 完整求法 log2 lowbit x 需要注意的是,答案的範圍是0 30,因為31位是符號位,求出來的值為負數,原因如下 設x 0x8000 0000,那麼設res lowbit x 0x8000...

位運算技巧

1.或 符號 比較兩個數的每一位,只要有乙個數在這一位上為1,所得的新數在這一位上就為1,否則為0。2.與符號 比較兩個數的每一位,只有兩數這一位同時為1時所得新數為1,否則為0。3.異或 符號 比較兩數的每一位,如果一樣所得新數這一位就是0,不一樣就是1。4.取反 符號 0變1,1變0。5.移位 ...

位運算技巧

1.n n 1 可以記住結論 n n 1 可以消除n的二進位制形式中的最後乙個1.leet191.位1的個數 public class solution return weight 本題就是利用n n 1 可以消除n的二進位制形式中的最後乙個1,當n為0的時候,說明原來n中的所有1都被消除了。這樣每...