假设我有一个变量SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
如何使用按位运算符(X = 4
)创建具有二进制表示形式1111
(长度为X
的数字)并确定位置并将该位置的位切换为{ {1}}。
示例:
& | ~ << ^
答案 0 :(得分:4)
是的,您将使用Math.pow
(或在现代浏览器中,使用exponentiation operator,**
)和bitwise operators来做到这一点。
function initial(digits) {
return Math.pow(2, digits) - 1;
}
function solution(value, bit) {
return value & ~(1 << (bit - 1)); // () around `bit - 1` aren't necessary,
// but I find it clearer
}
var X = initial(4); // X should be : 1111
console.log(X.toString(2));
var Y = solution(X, 2); // Y should be 1101
console.log(Y.toString(2));
var Z = solution(Y, 3); // Z should be 1001
console.log(Z.toString(2));
或者-哦! —对问题的评论指出,您可以创建不带Math.pow
或不取幂的初始号码:
function initial(digits) {
return (1 << digits) - 1;
}
function solution(value, bit) {
return value & ~(1 << (bit - 1)); // () around `bit - 1` aren't necessary,
// but I find it clearer
}
var X = initial(4); // X should be : 1111
console.log(X.toString(2));
var Y = solution(X, 2); // Y should be 1101
console.log(Y.toString(2));
var Z = solution(Y, 3); // Z should be 1001
console.log(Z.toString(2));