C語言 編寫函式: unsigned int reverse_bit(unsigned int value); 這個函式的返回 值value的二進位制位模式從左到右翻轉後的值。
阿新 • • 發佈:2018-12-20
#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;}
這裡介紹兩種方法
註釋的那一種為演算法 為所求數依次由最右向最左遞推
無註釋的方法為 直接將所求數位次由高到低的數由迴圈確定 然後做按位或運算