頻道欄目
首頁 > 程序開發 > 軟件開發 > C語言 > 正文
C語言:寫一個宏可以將一個數字的奇數位和偶數位交換
2018-07-24 15:58:40         來源:ETalien_的博客  
收藏   我要投稿

此題的解決思路為:將一個數字的奇數位提取出來并向左移動1位,偶數位提取出來并向右移動1位,將奇數位與偶數位移位后的值相加即可以實現。

例如:11----->1011

奇數位提取出來為0001---->向左移動1位為0010

偶數位提取出來為1010---->向右移動1位為0101

兩個移位后的值相加為0111---->輸出的值為7

這樣就完成了奇數位和偶數位交換。

具體代碼如下:

需要注意的是宏的使用要盡可能適當的多使用括號,以防操作符的優先級影響結果。

#include 
#include 
#define SWAP(X) ((((X)&0x55555555)<<1)+(((X)&0xaaaaaaaa)>>1))
  //提取奇數位向左移動1位//提取偶數位向右移動1位
int main()
{
	int n = 11;
	int ret = SWAP(n);
	printf("ret = %d\n", ret);
	system("pause");
	return 0;
}
點擊復制鏈接 與好友分享!回本站首頁
上一篇:C#之一次性清空textbox、combobox中所有的內容
下一篇:最后一頁
相關文章
圖文推薦
文章
推薦
點擊排行

關于我們 | 聯系我們 | 廣告服務 | 投資合作 | 版權申明 | 在線幫助 | 網站地圖 | 作品發布 | Vip技術培訓 | 舉報中心

版權所有: 紅黑聯盟--致力于做實用的IT技術學習網站

重庆快乐十分开奖记录