寫乙個巨集交換乙個數的偶數字和奇數字

2021-08-18 12:54:13 字數 606 閱讀 3388

要實現用巨集交換乙個數的偶數字和奇數字,首先要清楚如何使用巨集,其次要有用巨集實現該功能的整體思路。

例如:將數字5(0101)的奇數字和偶數字進行交換,得到10(1010);將數字10(a)的奇偶位交換,得到5。

那麼假設我們要將x的奇偶位進行交換,我們可以將x&(0x55555555)得到x的奇數字,其偶數字都為零,然後左移一位,即(x&(0x55555555))<<1將x的奇數字放到偶數字;

再將x&(oxaaaaaaaa)得到x的偶數字,其奇數字全為0,然後右移一位,即(x&(oxaaaaaaaa))>>1將x的偶數字放在奇數字上;

再將兩次的結果進行按位或運算,就能得到奇偶位交換後的數了。

源**:

#define _crt_secure_no_warnings 1

#define macro_swap(x) ( ((x & (0x55555555))<<1) | ((x & (0xaaaaaaaa))>>1))

#include int main()

執行結果:

寫乙個巨集函式交換乙個數字的偶數字元位和奇數字元位

想要交換乙個數的偶數字元位和奇數字元位 1.要想辦法提出奇數為和偶數字 任何數 1等於它本身,0 任何數都為0,所以要提出奇數字就要給奇數字都 1,偶數字都 0 要提出偶數字就要給偶數字都 1,奇數字都 0 num 0101 0101 0101 0101 0101 0101 0101 0101 就得...

巨集函式實現乙個數的奇數字和偶數字替換

寫乙個巨集函式,將乙個數的奇數字和偶數字替換 演算法思想 將操作物件 某個整數x 的奇數字保留,偶數字置0 方法是x 0x55555555 同樣的方法將整數x的偶數字保留,奇數字置0 方法是x aaaaaaaa 這樣之後拿到奇數字的結 果向左移動一位,偶數字的向右移動一位,再一拼接 方法是按位或 用...

交換乙個整數二進位制表示中的奇數字和偶數字

原文 寫程式交換乙個整數二進位制表示中的奇數字和偶數字,用盡可能少的 實現。比如,第0位和第1位交換,第2位和第3位交換 這道題目比較簡單。分別將這個整數的奇數字和偶數字提取出來,然後移位取或即可。如下 int swap bits int x 當然也可以採用更自然的方式來寫這段 int swap b...