C语言编程 输出一个数二进制位模式从左到右翻转后的值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言编程 输出一个数二进制位模式从左到右翻转后的值相关的知识,希望对你有一定的参考价值。
eg:在32位机器上25这个值包含下列各位:
00000000000000000000000000011001
翻转后:(2550136832)
10011000000000000000000000000000
程序结果返回:
2550136832
代码核心思想是将原来二进制序列最后一位看作反转后第一位,将原来二进制序列第一位看作反转后最后一位进行重新计算
比如15的2进制为 ……0000 1111
计算方法为
12^1 + 12^2 + 12^3 + 12^4
反转后为1111 0000……
计算方法为
12^31+12^30+12^29+12^28
源代码:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
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);//反转后依次每位二进制序列重新计算
}
return sum;
}
int main()
{
int n = 25,result;
result=reverse_bit(n);
printf("%u", result);
system("pause");
return 0;
}
以上是关于C语言编程 输出一个数二进制位模式从左到右翻转后的值的主要内容,如果未能解决你的问题,请参考以下文章
c语言二维数组中的查找,杨氏矩阵在一个二维数组中,每行都依照从左到右的递增的顺序排序,输入这种一个数组和一个数,推断数组中是否包括这个数