編寫函式可求得返回值value的二進位制位模式從左到右翻轉後的值
阿新 • • 發佈:2018-11-05
編寫函式:
unsigned int ReverseBit(unsigned int value);
這個函式的返回值value的二進位制位模式從左到右翻轉後的值。
如:
在32位機器上25這個值包含下列各位:
00000000000000000000000000011001
翻轉後:(2550136832)
10011000000000000000000000000000
程式結果返回:
2550136832
程式碼:
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <math.h> //unsigned int reverse_bit(unsigned int value); //這個函式的返回值value的二進位制位模式從左到右翻轉後的值。 unsigned int ReverseBit(unsigned int value){ //利用陣列實現 int j = 0; int arr[32] = { 0 }; double num = 0; int n = 0; //將十進位制轉化為反向的二進位制,並利用while迴圈將其儲存在陣列中 while (j < 32){ arr[j] = value % 2; value /= 2; j++; } //反向的二進位制轉化為十進位制 for (j = 31; j >= 0;--j){ num += (arr[j] * pow(2, n)); n++; } return num; } int main(){ int num = 0; printf("請輸入一個數字:\n"); scanf("%d", &num); printf("%u\n", ReverseBit(num)); system("pause"); return 0; }
執行結果: