1. 程式人生 > >【C語言練習題】二進位制位模式左右翻轉輸出

【C語言練習題】二進位制位模式左右翻轉輸出

《C與指標》5.3題

 

問題

實現一個函式 reverse_bits 將變數value的二進位制位模式從左到右變換一下後的值返回。

在32位機器上25這個值包含下列各位: 
00000000000000000000000000011001 
翻轉後:
10011000000000000000000000000000 

 

程式碼

//reverse_bits.c
#include <stdio.h>

unsigned int reverse_bits( unsigned int value )
{
	unsigned int answer;
	unsigned int i;

	answer = 0;

	for( i = 1; i != 0; i <<= 1 )
	{//answer左移預留一個空位,value最後一位決定這個空位填充1還是0
	 //將value右移,下一個位
	 //迴圈次數就是型別的長度

		answer <<= 1;
		if( value & 1 )
		{
			answer |= 1;
		}
		value >>= 1;
	}
	
	return answer;
}


void main(void)
{
	unsigned int num = 0xfe;

	printf( ">>%x\n", reverse_bits(num));
}

 

演示