![](/img/trans.png)
[英]How to manipulate bits 52-32 in Javascript, without strings?
[英]How to manipulate bits in Javascript?
假设我有一个变量X = 4
如何使用按位运算符 ( & | ~ << ^
) 创建一个具有二进制表示的数字1111
(长度为X
),并取一个位置并将该位置的位切换zero (0)
。
例子:
X = initial(4) // X should be : 1111
Y = solution(X, 2) // Y should be 1101
Z = solution(Y, 3) // Z should be 1001
是的,您会使用Math.pow
(或在现代浏览器上, 指数运算符**
)和按位运算符来执行此操作。
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));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.