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

2021-07-24 13:55:31 字數 597 閱讀 1539

想要交換乙個數的偶數字元位和奇數字元位:

1.要想辦法提出奇數為和偶數字

任何數 &1等於它本身,0&任何數都為0,

所以要提出奇數字就要給奇數字都&1,偶數字都&0;要提出偶數字就要給偶數字都&1,奇數字都&0

num&0101 0101 0101 0101 0101 0101 0101 0101 就得到它所有奇數字 =>> num & 0x55555555

同理 要得到所有偶數字 num&0xaaaaaaaa

2.將奇數字放到偶數字,將偶數字放到奇數字

奇數字左移一位到偶數字  (num&0x55555555)<<1

偶數字右移一位到奇數字  (num&0xaaaaaaaa)>>1

3.把奇數字和偶數字合併

把奇數字和偶數字通過 | 運算合併

((num&0x55555555)<<1) | ((num&0xaaaaaaaa)>>1)

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

int main()

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

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

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

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

用JAVA寫乙個函式交換兩個數字

前幾天面試,問到了這個題目,寫了個程式測試了下,直接交換和用包裝了交換都不能交換兩個數的值,而採用陣列交換和成員變數交換是可以做到的 package com.wq.swap public class swapnumbers 直接交換 public static void swap int a,int...