想要交換乙個數的偶數字元位和奇數字元位:
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...