繁体   English   中英

如何在 Javascript 中操作位?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM