加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java中的BitMask操作

发布时间:2020-12-15 00:44:16 所属栏目:Java 来源:网络整理
导读:考虑一下场景 我有这样的价值观 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 Mattre
考虑一下场景
我有这样的价值观

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将仅为非零.对于每次迭代,我们将掩码位向左移动一个位置.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读