将无符号数的指定位(bit)进行置1
输入无符号数,输入数字N(N>= 0; N<=31),将此无符号数的第N个bit置1,输出置1后的数值。 例如:输入 891 7
11 0111 1011
找到第7位(从右往左数),置1
11 1111 1011
10进制为1019
参考解答
public static void main(String[] args) {
System.out.println(setBit(891, 7));
}
public static int setBit(int n, int idx) {
int i = 1;
System.out.println(Integer.toBinaryString(n));
i = i << idx; // 将1左移idx位
int r = n | i;// 与n做按位或操作
System.out.println(Integer.toBinaryString(r));
return r;
}