1. 程式人生 > >倆種方法實現一個數的二進位制位模式從左到右翻轉後的值

倆種方法實現一個數的二進位制位模式從左到右翻轉後的值

第一種取出每一位與0按位或然後移位

#include <stdio.h>
#include <stdlib.h>
unsigned int  reverse_bit(unsigned int num)
{
    int ret = 0;
    int i = 0;
    for (i = 0; i < 32; i++)
    {
        ret = ret << 1;
        ret = ret | (num >> i) & 1;
    }
    return ret;
}
int main()
{
    unsigned
int num = 0; printf("請輸入一個數:"); scanf("%d",&num); printf("%u\n", reverse_bit(num)); system("pause"); return 0; }

第二種運用權重來做,左右翻轉就相當於這個數的二進位制數的最高位由value*2^31變為value*2^0,變為最低位即可。