纽约医院收治的武冠病毒感染重症患者的统计结果# Biology - 生物学
z*8
1 楼
career cup5.1
题目:
You are given two 32-bit numbers, N and M, and two bit positions, i and j.
Write a
method to set all bits between i and j in N equal to M (e.g., M becomes a
substring of
N located at i and starting at j).
EXAMPLE:
Input: N = 10000000000, M = 10101, i = 2, j = 6
Output: N = 10001010100
答案:
This code operates by clearing all bits in N between position i and j, and
then ORing to put
M in there.
1 public static int updateBits(int n, int m, int i, int j) {
2 int max = ~0; /* All 1’s */
3
4 // 1’s through position j, then 0’s
5 int left = max - ((1 << j) - 1);
6
7 // 1’s after position i
8 int right = ((1 << i) - 1);
9
10 // 1’s, with 0s between i and j
11 int mask = left | right;
12
13 // Clear i through j, then put m in there
14 return (n & mask) | (m << i);
15 }
这道题,是不是答案有问题?第五行应该是i<他要清空i~j,我就以这个例子来说,mask应该是0000011(最后7位),但是他这样出来
就是000011,最高位不清理
题目:
You are given two 32-bit numbers, N and M, and two bit positions, i and j.
Write a
method to set all bits between i and j in N equal to M (e.g., M becomes a
substring of
N located at i and starting at j).
EXAMPLE:
Input: N = 10000000000, M = 10101, i = 2, j = 6
Output: N = 10001010100
答案:
This code operates by clearing all bits in N between position i and j, and
then ORing to put
M in there.
1 public static int updateBits(int n, int m, int i, int j) {
2 int max = ~0; /* All 1’s */
3
4 // 1’s through position j, then 0’s
5 int left = max - ((1 << j) - 1);
6
7 // 1’s after position i
8 int right = ((1 << i) - 1);
9
10 // 1’s, with 0s between i and j
11 int mask = left | right;
12
13 // Clear i through j, then put m in there
14 return (n & mask) | (m << i);
15 }
这道题,是不是答案有问题?第五行应该是i<他要清空i~j,我就以这个例子来说,mask应该是0000011(最后7位),但是他这样出来
就是000011,最高位不清理