一個問題,如何優化? 是否有高效的算法
問題描述如下:
2個整數(int32),我需要對這2個數的第n位進行二進制數交換值。是否有一個高效的算法,或者高效的運算。
例子如下:
2個整數10,7,把第1位的數值交換。
整數 二進制 交換后二進制 交換后的值
10 0x1010 0x1011 11
7 0x0111 0x0110 6
我的思路如下:
1.如果要對第n位數值交換,先求出第n位的值(1或者0),如果相等則不交換。
2.交換第n位,通過通過原理發現只需通過加減法運算即可,如果1->0 則減 1<<(n-1) ,否則加1<<(n-1)。
代碼如下:

2



3

4

5

6

7

8



9

10

11

12

是否有一種高效的算法,只是進行一,兩步位與或運算即可。。
posted on 2009-10-18 22:27 expter 閱讀(2036) 評論(13) 編輯 收藏 引用 所屬分類: 其他學習筆記 、工作筆記 、算法與數據結構