1. 程式人生 > >二進制位模式從左到右翻轉(25~2550136832)

二進制位模式從左到右翻轉(25~2550136832)

math value 返回值 sum 編寫 sca += 機器 amp

1.編寫函數:
unsigned int reverse_bit(unsigned int value);
這個函數的返回值是value的二進制位模式從左到右翻轉後的值。
如:
在32位機器上25這個值包含下列各位:
00000000000000000000000000011001
翻轉後:(2550136832)
10011000000000000000000000000000
程序結果返回:
2550136832

#include<stdio.h>
#include<math.h>

unsigned int reverse_bit(unsigned int value)
{
    int sum = 0;
    int i = 0;
    for (i = 0; i < 32; i++)
    {
        sum += ((value >> i)&1)*(int)pow(2, 31 - i);//調用了math庫中的pow函數(冪函數)
    }
    return sum;
}
int main()
{
    int num=0; 
    printf("請輸入一個無符號十進制整數:\n");
    scanf("%u",&num);
    int ret = reverse_bit(num);
    printf("二進制位模式從左到右翻轉後的值=%u\n",ret);
    return 0;
}

二進制位模式從左到右翻轉(25~2550136832)