【LeetCode】Reverse Bits 翻转二进制
来源:互联网 发布:n卡驱动负优化 编辑:程序博客网 时间:2024/05/29 17:32
题目
Reverse Bits
Reverse bits of a given 32 bits unsigned integer.
For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as 00111001011110000010100101000000).
题目大意
给定一个32无符号整型,返回翻转二进制之后的整型值。
思路
创建一个新的变量,在原来变量n中有1的位拷贝到新变量逆序对应的位上,返回新变量即可。
图示如下:
解答
先开始使用Java做的,但是提交之后,提示Runtime Error,原因是测试用例给的输入为2147483648,但是Java中没有无符号整型,并且int范围是-2147483648~2147483647,在Eclipse使用该输入就会报错,题目也提示” you need treat n as an unsigned value”,提交当然不对,但是如果输入在范围内是可以的。
至于翻转二进制,第一种思路是转成字符串之后,翻转字符串,再转成二进制,代码如下:
public int reverseBits(int n) { String valStr = Integer.toBinaryString(n); //System.out.println(valStr); StringBuilder builder = new StringBuilder(); for (int i = 0; i < 32; i++) { if (i > valStr.length() - 1) { builder.append("0"); } else { builder.append(valStr.charAt(valStr.length() - 1 - i)); } } //System.out.println(builder.toString()); //System.out.println(Integer.valueOf(builder.toString(), 2)); return Integer.valueOf(Integer.valueOf(builder.toString(), 2)); }
另外一种翻转思路是,创建一个新的变量,在原来变量n中有1的位拷贝到新变量逆序对应的位上,代码如下:
public int reverseBits(int n) { int reverse_num = 0, i, temp; for (i = 0; i < 32; i++) { temp = (n & (1 << i)); if (temp > 0) reverse_num |= (1 << ((32 - 1) - i)); } System.out.println(reverse_num); return reverse_num; }
之后换成c的代码提交就AC了,如下:
uint32_t reverseBits(uint32_t n) { unsigned int NO_OF_BITS = 32; unsigned int reverse_num = 0, i, temp; for (i = 0; i < NO_OF_BITS; i++) { temp = (n & (1 << i)); if(temp) reverse_num |= (1 << ((NO_OF_BITS - 1) - i)); } return reverse_num;}
0 0
- 【LeetCode】Reverse Bits 翻转二进制
- leetcode 190. Reverse Bits-二进制翻转|位运算
- LeetCode 190. Reverse Bits(翻转比特)
- Reverse Bits 翻转进制位
- LeetCode OJ 之 Reverse Bits (翻转二进位)
- [理解leetcode解法]190. Reverse Bits 数字翻转
- leetCode #190 reverse bits
- 【LeetCode】Reverse Bits
- LeetCode:Reverse Bits
- LeetCode: Reverse Bits
- LeetCode: Reverse Bits
- [LeetCode]Reverse Bits
- leetcode: Reverse Bits
- LeetCode 190 Reverse Bits
- [LeetCode] Reverse Bits
- Leetcode--Reverse Bits
- [leetcode]Reverse Bits
- [LeetCode][190][Reverse Bits]
- 装饰模式
- classpath路径
- python多线程编程(2): 线程的创建、启动、挂起和退出
- 中文分词器IK和Paoding技术对比
- 单词积累
- 【LeetCode】Reverse Bits 翻转二进制
- 使用dedecms构建响应式站点(一)——安装
- python多线程编程(3): 使用互斥锁同步线程
- cocos2d-x3.5获取cocostuio生成的lua界面
- prim 与dijkstra的异同 POJ 2485 Highways
- session和cookie的区别是什么
- Stencil Buffer(模板缓冲区)
- Spring 基于XML配置的AOP入门案例
- 第7周项目1图形用户界面初体验(vs2008)