Reverse Bits

Time Limit: 2000/1000ms (Java/Others)

Problem Description:

Reverse bits of a given 32 bits signed integer.For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as 00111001011110000010100101000000).

Input:

The input includes several cases. For each case,input a 32-bits signed integer.

Output:

For each case,output the answer.

Sample Input:

43261596

Sample Output:

964176192
解题思路:简单地将二进制转化成十进制。如果n是负数,先将其转化成正数,取反后再加1,但是有一种特殊情况需要特判,即n==-2147483648(1<<31)由于取n的绝对值之后会溢出int最大值2147483647,因此需要单独判断这种情况,其二进制反转之后的结果为1。
AC代码一之简单模拟:
 #include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,k,tmp,base,d[];
while(cin>>n){
if(n==(<<)){cout<<<<endl;continue;}//特判:n==-2147483648反转32位二进制后结果为1
memset(d,,sizeof(d));k=;tmp=base=;m=n;
if(m<)m=-n;
while(m){d[k++]=m%;m/=;}//取余操作
if(n<){//如果n小于0,将n取反再加1
for(int i=;i<;++i){
d[i]=((d[i]==?:)+tmp)%;//按位取反,tmp初始值为1
tmp=((d[i]==?:)+tmp)/;
}
}
for(int i=;i>=;--i){
if(d[i])m+=base;//从高位向低位计算,相当于反转32位二进制之后从低位向高位计算
base*=;
}
cout<<m<<endl;
}
return ;
}

AC代码二之'且'运算符的巧妙使用:从第0位到第31位,有1就取。

 #include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
while(cin>>n){m=;
for(int i=;i<;++i)
if(n&(<<i))m+=(<<(-i));//如果二进制的第i位上为1,则加上2^(31-i)
cout<<m<<endl;
}
return ;
}

ACM_Reverse Bits(反转二进制)的更多相关文章

  1. CodeForces 485C Bits[贪心 二进制]

    C. Bits time limit per test1 second memory limit per test256 megabytes inputstandard input outputsta ...

  2. POJ 3279 Fliptile(反转 +二进制枚举)

    Fliptile Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 13631   Accepted: 5027 Descrip ...

  3. 全部leetcode题目解答(不含带锁)

    (记忆线:当时一刷完是1-205. 二刷88道.下次更新记得标记不能bug-free的原因.)   88-------------Perfect Squares(完美平方数.给一个整数,求出用平方数来 ...

  4. Leetcode 190 Reverse Bits 位运算

    反转二进制 class Solution { public: uint32_t reverseBits(uint32_t n) { uint32_t ans = ; ; i<; ++i,n &g ...

  5. db2 数据类型

    数据类型: 字符串类型 描述 CHARACTER(n) n bytes定长字符串. n 大于0 不大于255. 默认 1. VARCHAR(n) 变长字符串,最大 n bytes. n大于 0 小于表 ...

  6. 密码学那些事———SHA-512及其C++实现

    SHA-512及其C++实现 转载请注明出处 一.引言 相信大家对于哈希压缩加密算法应该不陌生,在我们用微信或者支付宝接口的时候经常会遇到用这类算法加密,以验证数据的完整性.可以说这类算法无处不在,那 ...

  7. LeetCode_832. Flipping an Image_Solution

    原题链接 原题中文链接 一.题目描述 二.解题思路 题目所描述的意思是对每个数组先进行取反,并且对数组中的每个元素进行取反转换,所以一共要执行两个操作. 使用reverse函数解决水平翻转的操作: 由 ...

  8. Java Integer为代表的包装类

    Java种的Integer是int的包装类型 1. Integer 是int的包装类型,数据类型是类,初值为null 2. 初始化时 int i = 1; Integer i = new Intege ...

  9. sequence.c

    /* * sequence.c */ #include <stdio.h> #include <memory.h> /* * SM3算法产生的哈希值大小(单位:字节) */ # ...

随机推荐

  1. 常量Constant

    常量通常指的是一个固定的值,例如:1.2.3.’a’.’b’.true.false.”helloWorld”等. 在Java语言中,主要是利用关键字final来定义一个常量. 常量一旦被初始化后不能再 ...

  2. Android BottomSheet:以选取图片为例(2)

     Android BottomSheet:以选取图片为例(2) 附录文章5简单介绍了常见的分享面板在BottomSheet中的具体应用.本文再以常见的选取图片为例写一个例子. 布局文件: < ...

  3. 网上的仿QQ验证码,详细使用方法

    struts2的配置 和代码 1.生成图片流 类名:VerifyCodeUtils /** * 生成图片流 * @author Administrator * */ import java.awt.C ...

  4. 网卡MAC地址异常会导致无接受数据包,表现为只有发送没有接收

    遇到一个诡异的问题,一块4口博通千兆网卡中两个正常,两个怎么都没有接受,但是博通的程序网卡自检没有任何问题,最后发现是MAC地址的原因.需要将地址改为正常MAC方可正常通讯. 感觉应该是交换机丢弃了M ...

  5. netty学习(一)--linux下的网络io模型简单介绍

    linux的内核将全部的外部设备都看作一个文件来操作,对一个文件的读写操作会调用内核提供的系统命令 ,返回一个file descriptor(fd.文件描写叙述符).而对一个socket的读写也会有对 ...

  6. Yocto tips (17): Yocto License问题:restricted license not whitelisted in LICENSE_FLAGS_WHITELIST

    Yocto中能够配置一个Distrbution的License.然后全部的软件包,都须要符合这个license才干够被shipped到image中,假设我们须要使用违反此license的软件包,那么就 ...

  7. JAVA 如何反编译JAR文件

    1 直接的jar文件可以用winrar解压,然后得到class文件,但是这里得到的class文件也是编译过的二进制文件,用传统的文本编辑器无法打开. 2 用XJad这个软件可以反编译Jar文件,直接找 ...

  8. 怎样一步步用D3画多曲线

    Bar Chart: http://bl.ocks.org/mbostock/3885304 这是一个画柱状图的基本形式. Axis是数轴: tickets是数轴上的标尺.tickets第二个參数% ...

  9. wikioi 1029 中序遍历总数

    题意:给出前序遍历和后序遍历,求总共同拥有多少种中序遍历的可能. 思路: 对于一个节点.当且仅当它仅有一棵子树时,在保证先序和后序同样的前提下,才可能有不同的中序(它的子树可在左或右,所以有2种): ...

  10. 数据库学习之简单的SQL语句

    1.数据库的结构 1.1数据库 不同数据库叫做Catalog(在有的 DBMS 中也称为 Database,即数据库) .採用多 Catalog 以后能够给我们带 来例如以下优点: 便于对各个 Cat ...