位運算兩種簡單操作
1. 求n的二進位制表示中第k位是多少。
步驟:①先把第k位移到最後一位 用 n>>k;
②看個位是多少n>>k&1
#include
#include
#include
#include
using
namespace std;
intmain()
2. 返回n的最後一位1:lowbit(n) = n & -n;lowbit(x):返回x的最後一位1
假設:①x = 1010 則lowbit(x) = 10;
②x=101000 則lowbit(x) = 1000;
x&-x
乙個數的負數,是補碼的概念,補碼是 取反+1
∗
*∗ 記憶補碼的l兩個小技巧
①從右邊開始找到第乙個1,這個1左邊的數全部取反。
②0-原數 = 補碼
在二進位制裡面
-x == ~x+1 則x&-x = x & (~x+1)
例題:acwing 801. 二進位制中1的個數
給定乙個長度為n的數列,請你求出數列中每個數的二進位制表示中1的個數。
輸入格式
第一行包含整數n。
第二行包含n個整數,表示整個數列。
輸出格式
共一行,包含n個整數,其中的第 i 個數表示數列中的第 i 個數的二進位制表示中1的個數。
資料範圍
1 ≤n
≤100000
1≤n≤100000
1≤n≤10
0000,0≤
數列中元
素的值≤
1090≤數列中元素的值≤10^9
0≤數列中元
素的值≤
109輸入樣例:
5
1 2 3 4 5
輸出樣例:
1 1 2 1 2
#include
#include
using
namespace std;
intlowbit
(int x)
intmain()
printf
("%d "
,cnt);}
return0;
}
基礎演算法 位運算 基本運算
1.移動 左移n位 乘以2的n次方 右移n位 除以2的n次方 0 左移n位 在1後面加上n個0 注 0不等於1。等於11 11 x 0 正數左移右邊補0 正數右移左邊補0 負數左移右邊補1 負數右移左邊補1 移動的作用總結 乘2,除2。右n位清零 2.異或 x 0 x x x 0 x 1 x x x...
演算法 位運算
public static intpowern int m,int n return m public static void main string args public static boolean ispower int n return false num如何使2的n次冪,那麼num nu...
NumPy學習筆記12 位運算
numpy bitwise 開頭的函式是位運算函式。包括以下幾個函式 函式描述 bitwise and 對陣列元素執行位與操作 bitwise or 對陣列元素執行位或操作 invert 按位取反 left shift 向左移動二進位制表示的位 right shift 向右移動二進位制表示的位 注 ...