1. 程式人生 > >一個將32位數字高低位互換的小程式

一個將32位數字高低位互換的小程式

在《C和指標》這本書上看到有一道題要求將一個32位資料高低位互換,提示用reverse.c做。網上大概看了一下沒有找到比較合適的答案,嘗試自己動手寫了一下。

利用遞迴,將餘數左移,返回結果。

#include<stdio.h>

unsigned int reverse(unsigned int value);
int main(void){
    unsigned int a = 25;
    int res = 0;//作為結果返回的值。全為0時按位或得到原值。
    printf("%ud",reverse(res,a,0));//列印結果
    return 0;
}
unsigned int reverse(unsigned int res,unsigned int ul32,int count){
    unsigned int remainder = ul32%2;//取餘數
    unsigned int temp = (int)ul32/2;//取結果
    res=res<<1;//將結果左移,用於遞迴後,將低位移到高位
    if(count<31){//迴圈結束條件
        res=(res|remainder);//結果與餘數相或,得到需要左移的數
        res=reverse(res,temp,++count);//遞迴呼叫,將結果賦值給res變數 
    }
    return res;   結束遞迴返回結果。
}