eg:
在32位機(jī)器上25這個(gè)值包含下列各位:
00000000000000000000000000011001
翻轉(zhuǎn)后:(2550136832)
10011000000000000000000000000000
程序結(jié)果返回:
2550136832
久治網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,久治網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為久治1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的久治做網(wǎng)站的公司定做!
代碼核心思想是將原來(lái)二進(jìn)制序列最后一位看作反轉(zhuǎn)后第一位,將原來(lái)二進(jìn)制序列第一位看作反轉(zhuǎn)后最后一位進(jìn)行重新計(jì)算
比如15的2進(jìn)制為 ……0000 1111
計(jì)算方法為
12^1 + 12^2 + 12^3 + 12^4
反轉(zhuǎn)后為1111 0000……
計(jì)算方法為
12^31+12^30+12^29+12^28
源代碼:
#include
#include
#include
unsigned int reverse_bit(unsigned int value)
{
int i=0,sum=0;
for (i = 0; i < 32;i++)
{
sum+=((value>> i) &1) * (int)pow(2, 31 - i);//反轉(zhuǎn)后依次每位二進(jìn)制序列重新計(jì)算
}
return sum;
}
int main()
{
int n = 25,result;
result=reverse_bit(n);
printf("%u", result);
system("pause");
return 0;
}