zoukankan      html  css  js  c++  java
  • 高低位交换

    高低位交换

    Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)
    Total Submission(s) : 78   Accepted Submission(s) : 56

    Font: Times New Roman | Verdana | Georgia

    Font Size: ← →

    Problem Description

    给出一个小于2^32的正整数。这个数可以用一个32位的二进制数表示(不足32位用0补足)。我们称这个二进制数的前16位为“高位”,后16位为“低位”。将它的高低位交换,我们可以得到一个新的数。试问这个新的数是多少(用十进制表示)
    例如,数1314520用二进制表示为0000 0000 0001 0100 0000 1110 1101 1000(添加了11个前导0补足为32位),其中前16位为高位,即0000 0000 0001 0100;后16位为低位,即0000 1110 1101 1000。将它的高低位进行交换,我们得到了一个新的二进制数0000 1110 1101 1000 0000 0000 0001 0100。它即是十进制的249036820。

    Input

    一个小于2^32的正整数N

    Output

    高低位交换后的正整数

    Sample Input

    1314520
    

    Sample Output

    249036820
    

    分析:

    用位运算就可以解决问题了。

    1 #include<stdio.h>
    2 int main()
    3 {
    4     long int a;
    5     scanf("%ld",&a);
    6     a=((a&65535)<<16)+((a&4294901760)>>16);
    7     printf("%ld
    ",a);
    8 return 0;
    9 }
    View Code
  • 相关阅读:
    java中的迭代器的含义
    angular-指令总结
    angular-ng-model
    angular-创建自定义的指令
    angular-$scope和$rootScope
    angular-过滤器
    Git-pull进入vim窗口解决办法
    Math常用方法
    全局变量和window属性上定义的变量
    透明点点的轮播图
  • 原文地址:https://www.cnblogs.com/gznb/p/11212876.html
Copyright © 2011-2022 走看看