编程之美--反转整数二进制位
2012-10-21 10:17
344 查看
public class BitReverse { /** * 用ans 保存最后结果,其思路就是每次取 a的最后一次,然后加到ans 的后面 * @param a * @return */ public static int bitReverse(int a){ int ans = 0; for(int i=0;i<31;i++){ ans |= a&0x01; a>>=1; ans<<=1; } return ans; } /** * 此方法效率更高一点,取出 i ,j 位的两个位置的数,为相同,则不用交换,不同则取反, * 相同的判断是进行 ^,为0相同,为1不同 * 对某一位取反则是用那一位与1进行异或,1^1 = 0 1^0 = 1 * @param a * @return */ public static int bitReverse2(int a){ for(int i=0,j=31;i<j;i++,j--){ if(((a>>i&0x01)^(a>>j&0x01))!=0){ // 两位不同,直接取反 a^=1<<i; a^=1<<j; } } return a; } public static void main(String args[]){ int a = 8; System.out.println(bitReverse(a)); System.out.println(bitReverse2(a)); } }
相关文章推荐
- 反转一个字节 和 判断32位整数二进制中1的个数 的算法(ZZ)
- 反转一个字节和判断32位整数二进制中1的个数等算法
- 反转一个字节 和 判断32位整数二进制中1的个数 的算法(ZZ)
- 反转一个字节 和 判断32位整数二进制中1的个数 的算法
- LintCode算法题解——奇偶分割数组、二进制中1个数、反转整数、加一、排序数组转换为高度最小的二叉搜索树、二进制求和
- (转贴)反转一个字节 和 判断32位整数二进制中1的个数 的算法
- 反转一个字节 和 判断32位整数二进制中1的个数 的算法(ZZ)
- 反转一个字节 和 判断32位整数二进制中1的个数 的算法
- 二进制反转整数
- 整数的二进制形式数反转
- 位运算实现反转字节和求二进制整数中1的个数(无循环)
- (转贴)反转一个字节 和 判断32位整数二进制中1的个数 的算法
- 《编程之美 》2.1 位运算实现—交换两个整数、求和、整数的二进制表达中1的个数
- 整数二进制比特反转
- 《编程之美》:整数的二进制表示中1的个数
- 反转一个字节 和 判断32位整数二进制中1的个数 的算法
- 两个整数对应的二进制汉明距离----hamming distance
- LeetCode 7. Reverse Integer(整数反转)
- 程序员面试题精选100题(22)-整数二进制表示中1的个数[算法]
- 求一个整数的二进制中1的个数