c語言 一個數的二進位制位的倒位
阿新 • • 發佈:2018-11-05
在32位計算機中儲存一個int型別的整形數時是按照二進位制的的32個位元為儲存的,例如"25"儲存時儲存的是“00000000 00000000 00000000 00011001”,而將其二進位制數到位得到的是“11001000 00000000 00000000 00000000”.
為了實現二進位制數的倒位可以通過位運算和函式遞迴的方式實現,思路是先將每一個二進位制的位上的數倒位,然後將所有的輸倒位到相應的位上,再通過函式的遞迴來將所有得到的數加起來(數的相加是位的相加),最後輸出。
主要步驟是數的移位,在移位中只保留當次所移位的數,先將該數右邊的數全部擠出去,再將左邊的數全部擠出去,然後返回原位置,在移到需要倒的位上,最後全部相加,以整形返回。
#include<stdio.h> unsigned int reverse_bit(unsigned int con,int i) { if (i <= 31) { unsigned int tmp = con; tmp = tmp >> i; tmp = tmp << 31; tmp = tmp >> 31; tmp=tmp << (31 - i); i++; return tmp + reverse_bit(con,i); } else return 0; } int main() { unsigned int k = 25; int j = 0; int value =reverse_bit(k,j); printf("%d\n", value); system("pause"); return 0; }