我正在为该问题调试一些解决方案,这里是问题的详细信息,我的具体问题是,我认为第14行是错误的,因为我们没有找到M的子部分(我是指第i个和第j个之间的比特),但是使用整个M,是正确的?取代第i和第j在第N和M之间的比特到M
给出两个32位数字N和M以及两个位位置i和j。编写一个方法来设置N和M之间的所有位(例如,M变成位于i并且从j开始的N的子串)。 实施例: 输入:N =百亿,M = 10101,I = 2,J = 6 输出:N = 10001010100
public static int updateBits(int n, int m, int i, int j) {
int max = ~0; /* All 1’s */
// 1’s through position j, then 0’s
int left = max - ((1 << j) - 1);
// 1’s after position i
int right = ((1 << i) - 1);
// 1’s, with 0s between i and j
int mask = left | right;
// Clear i through j, then put m in there
return (n & mask) | (m << i); // Line 14.
}
由于事先 林
我再次问:请不要在您的代码中放入行号,特别是如果您不打算缩进它适当地或引用您的问题中的任何代码行。 –
@AndyTurner,谢谢,我下次肯定会照顾的。 :P –
所以最新你的问题?如果它检查逻辑或者不用打印语句运行你最喜欢的IDE。或者您是我们向您解释这种方法的问题吗? –