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

2021-07-25 07:38:22 字數 486 閱讀 3927

寫乙個巨集函式,將乙個數的奇數字和偶數字替換:

演算法思想:將操作物件(某個整數x)的奇數字保留,偶數字置0(方法是x&0x55555555),同樣的方法將整數x的偶數字保留,奇數字置0(方法是x&aaaaaaaa),這樣之後拿到奇數字的結

果向左移動一位,偶數字的向右移動一位,再一拼接(方法是按位或),用的原理是乙個位元位按位或另乙個位元位,不改變這個位元位

注意:(1)乙個整數從最低位開始,第一位是奇數字,最高位是32位(也就是偶數字)

(2)注意拿到奇偶數字的結果之後,奇數字應該向左移動,偶數字向右移動,防止丟1

#include #include #pragma warning(disable:4996)

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

int main()

輸入:7      輸出:11

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

要實現用巨集交換乙個數的偶數字和奇數字,首先要清楚如何使用巨集,其次要有用巨集實現該功能的整體思路。例如 將數字5 0101 的奇數字和偶數字進行交換,得到10 1010 將數字10 a 的奇偶位交換,得到5。那麼假設我們要將x的奇偶位進行交換,我們可以將x 0x55555555 得到x的奇數字,其...

巨集函式實現乙個數字二進位制的奇數字和偶數字交換

巨集函式在c語言程式設計中有不可忽視的作用,並且數字二進位制的奇偶位交換也比較常見,所以用巨集函式來實現數字二進位制的奇數字和偶數字交換不失為乙個很好的方法。首先我們要清楚巨集函式的用法,其次要有用巨集函式實現該功能的整體思路,下面我帶著大家分析一下 例 將數字5 0101 交換二進位制奇偶位為 1...

判斷乙個數是偶數還是奇數

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!遞迴入門 互動遞迴 到目前為止,看到的遞迴函式都是直接呼叫自己。雖然大多數的遞迴函式都符合這一形式,但其實遞迴的定義更為廣泛,如果某個函式被細分成了幾個子函式,那麼可以在更深的巢狀層次上應用遞迴呼叫。例如 如果函式 f 呼叫函式 g 而函式 g 反...