基礎演算法 12 位運算

2021-10-24 06:10:25 字數 1463 閱讀 9265

位運算兩種簡單操作

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 向右移動二進位制表示的位 注 ...