zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    shell test条件判断
    shell 变量
    shell 流程结构
    shell 正则表达式
    shell脚本常用参数
    snmp 简单的网络管理协议
    linux
    nmap
    git 基础操作
    linux 下 svn 更新代码
  • 原文地址:https://www.cnblogs.com/Kaniso-Vok/p/13756255.html
Copyright © 2011-2022 走看看