微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java中的BitMask操作

考虑一下场景
我有这样的价值观

Amazon -1

Walmart -2

Target -4

Costco -8

Bjs -16

在DB中,通过根据每个产品的可用性屏蔽这些值来存储数据.
例如.,

Mask product description

1 laptop Available in Amazon

17 iPhone Available in Amazon
and BJ

24 Mattress Available in
Costco and BJ’s

像这样,所有产品都被掩盖并存储在DB中.

如何根据Masked值检索所有零售商.
例如,对于床垫,蒙面值是24.然后我如何找到或列出Costco& BJ以编程方式.任何算法/逻辑都将受到高度赞赏.

解决方法

int mattress = 24;
int mask = 1;
for(int i = 0; i < num_stores; ++i) {
    if(mask & mattress != 0) {
        System.out.println("Store "+i+" has mattresses!");
    }
    mask = mask << 1;
}

if语句将这些位排成一行,如果床垫值与掩码组具有相同的位,那么其商店的面具就是销售床垫.当商店出售床垫时,床垫值和面罩值的AND将仅为非零.对于每次迭代,我们将掩码位向左移动一个位置.

请注意,掩码值应为正值,而不是负值,如果需要,可以乘以负值.

原文地址:https://www.jb51.cc/java/129610.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐