190.[LeetCode]Reverse Bits(*)
来源:互联网 发布:冒险岛实时市场数据 编辑:程序博客网 时间:2024/05/18 06:13
本题是非常典型的位运算题,倒置一个32位的无符号int数。
循环最小的方法是将前16位和后16位互换,一个循环16次
关于位操作的一些tips
- 位操作只能用于整型数据,对float和double的类型位操作会报错
- 位操作的优先级比较低,要使用括号
- 与或不用说,异或是 ^ ,而非是 ~。
- 左移 低位补0,右移 对于无符号数来说,高位补零。有符号数,各个编译器处理方法不一样
public class Solution { // you need treat n as an unsigned value public int reverseBits(int n) { int i = 0; int j = 31; while(i < 16){ n = swapBits(n,i++,j--); } return n; } /** * 这个方法用于交换两个bit位的值 */ public int swapBits(int n,int i,int j){ // 首先要获取对应的两个位置是0还是1,方法:右移对应位置 到 第一个位置,然后把和1做与运算 int pos_i = (n >> i) & 1; // 低位 int pos_j = (n >> j) & 1; // 高位 // 如果相等,则不交换,否则交换,求1个位置的逆,可以在对应位置做异或操作,0^1 = 1,1^1 = 0 if(pos_i != pos_j){ return n = n^((1<<i)|(1<<j)); } return n; }}
0 0
- 190.[LeetCode]Reverse Bits(*)
- 【LeetCode】190.Reverse bits
- LeetCode 190. Reverse Bits
- Leetcode 190. Reverse Bits
- 190. Reverse Bits LeetCode
- LeetCode *** 190. Reverse Bits
- LeetCode 190. Reverse Bits
- Leetcode-190. Reverse Bits
- Leetcode 190. Reverse Bits
- LeetCode-190.Reverse Bits
- [leetcode] 190. Reverse Bits
- Leetcode 190. Reverse Bits
- [Leetcode]190. Reverse Bits
- LeetCode 190. Reverse Bits
- [leetcode] 190. Reverse Bits
- leetcode 190. Reverse Bits
- [LeetCode] 190. Reverse Bits
- leetcode 190. Reverse Bits
- XML Schema
- 1900: 985的“树”难题
- Linux misc设备驱动理解
- 物流知识总结(一)
- JavaScript学习总结(四)——逻辑OR运算符详解
- 190.[LeetCode]Reverse Bits(*)
- (二十四)、常用类:时间相关类
- 网易 合唱团
- SharedPreferences
- 【BZOJ4653】区间,离散化+线段树
- 设计模式之工厂方法模式
- POJ Colored Sticks 2513(字典树+并查集+欧拉回路)
- Redis集群教程(Redis cluster tutorial)
- hdoj1260Tickets