轉自《C和指針》
在寫程序時,對於整數類型的值,不同的機器有着不同的存儲位數,比如對於int類型,有的機器是32位的,有的是16位的,這樣就涉及了程序的移植性問題。
現有如下需求:請編寫函數unsigned int reverse_bits(unsigned int value),函數返回值爲把value的二進制位前後顛倒後的結果,例如在16位機器上,1的二進制形式爲0000 0000 0000 0001,函數返回值爲1000 0000 0000 0000,編寫函數時要注意不要讓其依賴機器的整型值長度,以增強程序的可移植性。
實現如下:
unsigned int reverse_bits(unsigned int value){
unsigned int result=0,i=1;
for(;i!=0;i<<=1){//通過i移位直至爲0來確定循環的次數,不依賴機器的整型值長度
result<<=1;
if(value&1){
result|=1;
}
value>>=1;
}
return result;
}