1. 程式人生 > >c語言 一個數的二進位制位的倒位

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

      在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;
}