最妙不過位運算

2021-09-30 20:45:34 字數 582 閱讀 6757

先來占個坑,以後慢慢補充。

一道藍橋杯2018b組國賽題目

補全**的題目

格雷碼是以n位的二進位制來表示數。 與普通的二進位制表示不同的是,它要求相鄰兩個數字只能有1個數字不同。 首尾兩個數字也要求只有1位之差。有很多演算法來生成格雷碼。以下是較常見的一種: 從編碼全0開始生成。 當產生第奇數個數時,只把當前數字最末位改變(0變1,1變0) 當產生第偶數個數時,先找到最右邊的乙個1,把它左邊的數字改變。 用這個規則產生的4位格雷碼序列

思路:

偶數時直接異或1;

奇數時找到最低位的1,然後將其左移一位,在於原來的值進行異或。

試問,如何找到最低位的1?

直接x&(-x)即可!

#include 

void show

(int a,int n)

printf

("\n");

} void f

(int n)

else}}

int main()

通過位運算實現數值交換

對於數值的交換操作,通常會採用第三個變數作為中間變數過渡的交換方式。temp a a b b temp 使用這種方法,可以保證交換的準確性,但是由於會使用第三個變數,占用了額外的記憶體空間。那麼有沒有辦法不借助第三個變數實現兩個數值的交換呢?可以通過數值相加寄存和位運算兩種方式。1 相加寄存 可以將...

php mysql通過位運算操作推薦位

position 字段設定為tinyint 假定 1代表首頁推薦 2代表欄目推薦 4代表內頁推薦 8代表其他推薦 那麼如果position 欄位的值為3就代表首頁推薦 欄目推薦 1 2 如果position 欄位的值為7代表首頁推薦 欄目推薦 內頁推薦 1 2 4 然後 position i pos...

js通過位運算實現許可權加解密

首先介紹一下js中的位運算 1.與運算,轉化為二進位制數,如果相同位數都為1則得結果為1,否則為0 2.或運算,轉化為二進位制數,如果相同位數只要有乙個為1則得結果為1,否則為0 3.異或運算,轉化為二進位制數,如果相同位數不同則得結果為1,否則為0 4.順便說一下,十進位制數字互相轉化。十進位制轉...