如何处理Java中的位?

时间:2018-11-10 13:35:16

标签: javascript bit-manipulation

假设我有一个变量SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

如何使用按位运算符(X = 4)创建具有二进制表示形式1111(长度为X的数字)并确定位置并将该位置的位切换为{ {1}}。

示例:

& | ~ << ^

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));