二進制位模式從左到右翻轉(25~2550136832)
阿新 • • 發佈:2019-04-20
math value 返回值 sum 編寫 sca += 機器 amp 1.編寫函數:
unsigned int reverse_bit(unsigned int value);
這個函數的返回值是value的二進制位模式從左到右翻轉後的值。
如:
在32位機器上25這個值包含下列各位:
00000000000000000000000000011001
翻轉後:(2550136832)
10011000000000000000000000000000
程序結果返回:
2550136832
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)