深圳建设工程交易网站宝安,电子商务网站建设评估工具,北京怎样在社保网站上做减员,温州专业手机网站制作哪家便宜颠倒二进制位
力扣链接#xff1a;190. 颠倒二进制位
题目描述
颠倒给定的 32 位无符号整数的二进制位。
提示#xff1a;
请注意#xff0c;在某些语言#xff08;如 Java#xff09;中#xff0c;没有无符号整数类型。在这种情况下#xff0c;输入和输出都将被指…颠倒二进制位
力扣链接190. 颠倒二进制位
题目描述
颠倒给定的 32 位无符号整数的二进制位。
提示
请注意在某些语言如 Java中没有无符号整数类型。在这种情况下输入和输出都将被指定为有符号整数类型并且不应影响您的实现因为无论整数是有符号的还是无符号的其内部的二进制表示形式都是相同的。 在 Java 中编译器使用二进制补码记法来表示有符号整数。因此在 示例 2 中输入表示有符号整数 -3输出表示有符号整数 -1073741825。
示例 Java代码
public class Solution {public int reverseBits(int n) {return Integer.reverse(n);}
}public class Solution {public int reverseBits(int n) {int res 0;for(int i 0; i 32 n ! 0; i) {res | (n 1) (31 - i);n 1;}return res;}
}
//在某些语言如Java中没有无符号整数类型
//因此对 n 的右移操作应使用逻辑右移。//位运算分治
public class Solution {private static final int M1 0x55555555; // 01010101010101010101010101010101private static final int M2 0x33333333; // 00110011001100110011001100110011private static final int M4 0x0f0f0f0f; // 00001111000011110000111100001111private static final int M8 0x00ff00ff; // 00000000111111110000000011111111public int reverseBits(int n) {n n 1 M1 | (n M1) 1;n n 2 M2 | (n M2) 2;n n 4 M4 | (n M4) 4;n n 8 M8 | (n M8) 8;return n 16 | n 16;}
}