ACM_Reverse Bits(反转二进制)
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(反转二进制)的更多相关文章
- CodeForces 485C Bits[贪心 二进制]
C. Bits time limit per test1 second memory limit per test256 megabytes inputstandard input outputsta ...
- POJ 3279 Fliptile(反转 +二进制枚举)
Fliptile Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13631 Accepted: 5027 Descrip ...
- 全部leetcode题目解答(不含带锁)
(记忆线:当时一刷完是1-205. 二刷88道.下次更新记得标记不能bug-free的原因.) 88-------------Perfect Squares(完美平方数.给一个整数,求出用平方数来 ...
- Leetcode 190 Reverse Bits 位运算
反转二进制 class Solution { public: uint32_t reverseBits(uint32_t n) { uint32_t ans = ; ; i<; ++i,n &g ...
- db2 数据类型
数据类型: 字符串类型 描述 CHARACTER(n) n bytes定长字符串. n 大于0 不大于255. 默认 1. VARCHAR(n) 变长字符串,最大 n bytes. n大于 0 小于表 ...
- 密码学那些事———SHA-512及其C++实现
SHA-512及其C++实现 转载请注明出处 一.引言 相信大家对于哈希压缩加密算法应该不陌生,在我们用微信或者支付宝接口的时候经常会遇到用这类算法加密,以验证数据的完整性.可以说这类算法无处不在,那 ...
- LeetCode_832. Flipping an Image_Solution
原题链接 原题中文链接 一.题目描述 二.解题思路 题目所描述的意思是对每个数组先进行取反,并且对数组中的每个元素进行取反转换,所以一共要执行两个操作. 使用reverse函数解决水平翻转的操作: 由 ...
- Java Integer为代表的包装类
Java种的Integer是int的包装类型 1. Integer 是int的包装类型,数据类型是类,初值为null 2. 初始化时 int i = 1; Integer i = new Intege ...
- sequence.c
/* * sequence.c */ #include <stdio.h> #include <memory.h> /* * SM3算法产生的哈希值大小(单位:字节) */ # ...
随机推荐
- LINUX-磁盘空间
df -h 显示已经挂载的分区列表 ls -lSr |more 以尺寸大小排列文件和目录 du -sh dir1 估算目录 'dir1' 已经使用的磁盘空间' du -sk * | sort -rn ...
- Flask蓝图基本使用
Flask蓝图基本使用 Flask通过使用蓝图将视图函数模块化,使应用显得更加规整 比如我们的应用的视图函数包括用户相关和文章相关,那么我们可以通过建立两个py文件分别存储两类视图函数 user.py ...
- 关于Scrum 实战故事录播的感悟升级
昨晚与几位自组织的伙伴进行了<Scrum 实战> 第17 章 <富有成效的每日站会>录播Sprint 不断的优化和精进的感悟. 首先,D兄给予了如下的建议: 1. 将段落 分得 ...
- opengl 对投影变化函数的理解
投影变化分两种: 1 . 平行投影 2 . 透视投影 投影变化的设置一般放在reshape函数当中调用 每次要对投影变化进行操作的时候我们需要修改矩阵的变化模式,指定它为投影变化 glMa ...
- Oracle怎么用(常用工具)
Oracle数据库管理系统装好了!那要怎么用呢? 将介绍的工具:①Database Configuration Assistant ②SQL Plus ③SQL Developer 一.Dat ...
- Java中DAO/DTO/PO/VO/BO/QO/POJO
ORM:是Object Relational Mapping(对象关系映射)的缩写. 通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据.在O/R/M的世界里,有两个基本的也是重要的东东需要了 ...
- MyBatis3错误:Parameter 'id' not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]或者Parameter '0' not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]
这个问题涉及到MyBatis3在使用select节点查询时传递多个参数的问题.问题分析如下: 1.如果是单个查询一般是这样配置: <select id="getUserArticles ...
- 项目中应用到的框架和技术之二——ol3-ext
ol3-ext有很多很丰富的效果,可以不用重复造轮子,ol3-ext示例大全:http://viglino.github.io/ol3-ext/ 在本次项目中使用到了ol3-ext的两个功能:图层管理 ...
- ASPNET Razor 使用 @Ajax.BeginForm 需要注意到的细节
创建空的web项目,通过Nuget引用mvc组件来搭建空的MVC项目时, 在视图页面中无法使用@Ajax.BegForm来进行异步提交数据, 而新建默认的MVC模板项目却能够正常使用@Ajax.Beg ...
- Android中apk动态载入技术研究(2)android插件化及实现
了解了android中类载入的前期知识点后,来看看android中DexClassLoader详细的实现 详细载入流程例如以下: 宿主程序会到文件系统比方SD卡中去载入APK[1],然 ...