c語言 乙個數的二進位制位的倒位

2021-08-21 20:59:22 字數 491 閱讀 4619

在32位計算機中儲存乙個int型別的整形數時是按照二進位制的的32個位元為儲存的,例如"25"儲存時儲存的是「00000000 00000000 00000000 00011001」,而將其二進位制數到位得到的是「11001000 00000000 00000000 00000000」.

為了實現二進位制數的倒位可以通過位運算和函式遞迴的方式實現,思路是先將每乙個二進位制的位上的數倒位,然後將所有的輸倒位到相應的位上,再通過函式的遞迴來將所有得到的數加起來(數的相加是位的相加),最後輸出。

主要步驟是數的移位,在移位中只保留當次所移位的數,先將該數右邊的數全部擠出去,再將左邊的數全部擠出去,然後返回原位置,在移到需要倒的位上,最後全部相加,以整形返回。

#includeunsigned int reverse_bit(unsigned int con,int i)

else

return 0;

}int main()

將乙個數的二進位制位進行翻轉

在學習redis原始碼的時候,看到了這段 很少寫blog,不太會表達自己的觀點。static unsigned long rev unsigned long v return v 舉乙個例 所有的數都用二進位制表示 假設v 11001010,unsigned long為1個位元組 方便 s 4 ma...

位運算 求乙個 數二進位制中1的個數

1 與 有0則0 無0則1 2 或 有1則1,無1則0 3 亦或 相同為0,不同為1 4 右移 最右邊的位被拋棄 正數,最左邊添0 00001010 3 00000001 負數,最左邊添1 10001010 3 11110001 5 左移 最左邊的位被拋棄 最右邊統一添0 正數 00001010 3...

32位的二進位制數

給出乙個小於2 32的正整數。這個數可以用乙個32位的二進位制數表示 不足32位用0補足 我們稱這個二進位制數的前16位為 高位 後16位為 低位 將它的高低位交換,我們可以得到乙個新的數。試問這個新的數是多少 用十進位制表示 例如,數1314520用二進位制表示為0000 0000 0001 01...