作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
所以我明白我的问题是关于掩蔽的。我看到了 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/
我是一名优秀的程序员,十分优秀!