【C語言練習題】二進位制位模式左右翻轉輸出
阿新 • • 發佈:2018-12-24
《C與指標》5.3題
問題
實現一個函式 reverse_bits 將變數value的二進位制位模式從左到右變換一下後的值返回。
在32位機器上25這個值包含下列各位:
00000000000000000000000000011001
翻轉後:
10011000000000000000000000000000
程式碼
//reverse_bits.c #include <stdio.h> unsigned int reverse_bits( unsigned int value ) { unsigned int answer; unsigned int i; answer = 0; for( i = 1; i != 0; i <<= 1 ) {//answer左移預留一個空位,value最後一位決定這個空位填充1還是0 //將value右移,下一個位 //迴圈次數就是型別的長度 answer <<= 1; if( value & 1 ) { answer |= 1; } value >>= 1; } return answer; } void main(void) { unsigned int num = 0xfe; printf( ">>%x\n", reverse_bits(num)); }