将无符号数的指定位(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;
}

results matching ""

    No results matching ""