【c語言】寫一個巨集定義,實現的功能是將一個int型的數的奇偶位互換

zhaoyaqian552發表於2015-06-29
//  寫一個巨集定義,實現的功能是將一個int型的數的奇偶位互換,例如6的二進位制為0110,第一位與第二位互換,
//  第三位與第四位互換,得到1001,輸出應該為9

#include <stdio.h>
//  取出奇數位與偶數位,奇數位左移1位,偶數位一位,相加或者相或
#define EXCHANGE(num) (((0x55555555 & num) << 1) + ((0xaaaaaaaa & num) >> 1))

int main()
{
	printf("%u\n", EXCHANGE(2));
	printf("%u\n", EXCHANGE(3));
	printf("%u\n", EXCHANGE(10));
	printf("%u\n", EXCHANGE(5));
	return 0;
}

<img src="https://img-blog.csdn.net/20150629213105535?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhcWlhbjU1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

相關文章