交換乙個整數二進位制表示中的奇數字和偶數字

2021-09-22 19:20:53 字數 380 閱讀 3446

原文:

寫程式交換乙個整數二進位制表示中的奇數字和偶數字,用盡可能少的**實現。 (比如,第0位和第1位交換,第2位和第3位交換…)

這道題目比較簡單。分別將這個整數的奇數字和偶數字提取出來,然後移位取或即可。

**如下:

int swap_bits(int

x)

當然也可以採用更自然的方式來寫這段**:

int swap_bits1(int

x)

上面的**思路和作用都是一樣的,不過按照《hacker』s delight》這本書裡的說法, 第一種方法避免了在乙個暫存器中生成兩個大常量。如果計算機沒有與非指令, 將導致第二種方法多使用1個指令。總結之,就是第一種方法更好。

整數的二進位制表示

目錄總結 整數的二進位制表示,需要區分正整數和負整數來看。看正整數的二進位制表示,就要先了解一下位權。十進位制 二進位制都有位權。以 123 為例 123 1 10 2 2 10 1 3 10 0。每個位置的位權都不一樣,十進位制從右到左,以 1 開始,依次乘 10 也就是說第 1 位為 1 第 2...

逆轉乙個整數的二進位制表示問題

解法一 這個容易理解。解法一 define unsigned bits count 32 unsigned int bitrev3 unsigned int input 解法二 第一行 為奇偶位相互交換 第二行為以兩位為一單元,奇偶單元進行交換 第三行為以四位為一單元,奇偶單元進行交換 第四行為以八...

求逆轉乙個整數的二進位制表示

解法一 這個容易理解。cpp view plain copy 解法一 define unsigned bits count 32 unsigned int bitrev3 unsigned intinput 我的格式,先不考慮符號問題 int reverse int n return ret 解法二...