温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C语言编程 输出一个数二进制位模式从左到右翻转后的值

发布时间:2020-07-13 01:39:31 来源:网络 阅读:325 作者:sonissa 栏目:编程语言

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;
}
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI