1. 程式人生 > >C語言 編寫函式: unsigned int reverse_bit(unsigned int value); 這個函式的返回 值value的二進位制位模式從左到右翻轉後的值。

C語言 編寫函式: unsigned int reverse_bit(unsigned int value); 這個函式的返回 值value的二進位制位模式從左到右翻轉後的值。

#include<stdio.h>
unsigned int reverse_bit(unsigned int value)
{
	int ret = 0;
	int bit = 0;
#include<stdio.h>
unsigned int reverse_bit(unsigned int value)
{
	int ret = 0;
	int bit = 0;
	int i = 0;
	for (i = 0; i < 32; i++) 
	{
		//ret = ret << 1; //左移一位,儲存前一位  
		//bit = value & 1; //取出最後一位  
		//value = value >> 1;//值右移,取下一位  
		//ret = bit | ret; //最後一位賦給ret
		bit = value & 1;
		bit = (bit << (31 - i)) | 0;
		ret = ret | bit;
		value = value >> 1;
	}
	return ret;
}
int main()
{
	int num = 25;
	int reverse_num = 0;
	reverse_num=reverse_bit(num);
	printf("%u\n", reverse_num);
	return 0;
}

int i = 0;for (i = 0; i < 32; i++) {ret = ret << 1; //左移一位,儲存前一位 bit = value & 1; //取出最後一位 value = value >> 1;//值右移,取下一位 ret = bit | ret; //最後一位賦給ret}return ret;}int main(){int num = 25;int reverse_num = 0;reverse_num=reverse_bit(num);printf("%u\n", reverse_num);return 0;}

這裡介紹兩種方法

註釋的那一種為演算法 為所求數依次由最右向最左遞推

無註釋的方法為 直接將所求數位次由高到低的數由迴圈確定 然後做按位或運算