Javascript 掩码计算

标签 javascript algorithm

所以我明白我的问题是关于掩蔽的。我看到了 javascript 屏蔽的文档 here .

所以我尝试了:

var PEN = 1;
var CHAIR = 2;
var TABLE = 4;

> PEN | CHAIR
3

但是,如果我拥有的是 3,我如何仅从该数字中获得我所拥有的呢?

原始问题

比如说,我有以下常数:

1 | 2 | 4

这些数字对应一个东西。

假设:1 是一支笔,2 是一把椅子,4 是一张 table 。

可能性:

If I have the #1 it means I have a pen but NO chair and table.
If I have the #2 it means I have a chair but NO pen and table.
If I have the #4 it means I have a table but NO pen and chair.

If I have the #3 it means I have a pen and a chair but NO table.
If I have the #6 it means I have a chair, a table but NO pen.
If I have the #7 it means I have a pen, a chair and a table.

问题:现在假设我只知道数字 6。我如何以编程方式破译 6 表示 2 和 4 或者我有一张椅子和一张 table ?

对不起,这也让我很困惑。我正在尝试将游戏的技能列表算法重新实现为 javascript。如果我有 6,这意味着我有第二和第三技能,但没有第一技能。

还有这个方法叫什么?

最佳答案

假设您有 5 种技能...A、B、C、D 和 E。您可以将这些技能编码为整数的第一、第二、第三、第四和第五位。

所以,如果玩家的技能是 0b00001000... 那意味着他有第 4 个技能。

现在,

// No skill
var skill = 0;

// add skill B... which means set second bit to 1.
skill = skill | ( 1 << 1 );

// add skill A
skill = skill | ( 1 << 0 );

//check for skill B,
var hasSkillB = ( ( skill & ( 1 << 1 ) ) > 0 );

// Remove skill B
skill = skill & ( ~( 1 << 1 ) );

关于Javascript 掩码计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28240854/

相关文章:

javascript - 数据在 Polymer 应用程序中未绑定(bind)

JavaScript - 大的 for 循环,我应该释放对象吗?

更改 HTML 中的 div 位置时 Javascript 不起作用

java - 在Java中查找负数的最大乘积

用于查找满足 w+x = y+j 的 (x,y,z,j) 的所有组合的算法,其中 w,x,y,j 是 -N...N 之间的整数(含)

c++ - 基于图像的计数算法对移动传送带上的物体进行计数

algorithm - 算法设计手册的这一部分在说什么?我很困惑

javascript - Jquery 幻灯片动画行为异常(事件触发,在队列中建立)

javascript - 在 Javascript 中检查数组的所有元素类型时出现问题

c++ - 需要帮助优化动态规划问题的解决方案