当前位置: 首页 > 面试题库 >

位掩码问题?

乜华翰
2023-03-14
问题内容

我有以下几点:

public static final int LIMIT_ONE = 1;
public static final int TRADEABLE = (1 << 1);
public static final int SELLABLE = (1 << 2);
public static final int STORABLE = (1 << 3);
public static final int STORABLE_IN_WH = (1 << 4);
public static final int STORABLE_IN_LEGION_WH = (1 << 5);
public static final int BREAKABLE = (1 << 6);
public static final int SOUL_BOUND = (1 << 7);
public static final int UNK9 = (1 << 8);
public static final int UNK10 = (1 << 9);
public static final int UNK11 = (1 << 10);
public static final int CAN_COMPOSITE_WEAPON = (1 << 11);
public static final int BLACK_CLOUD_TRADERS = (1 << 12);
public static final int CAN_SPLIT = (1 << 13);
public static final int UNK15 = (1 << 14);
public static final int UNK16 = (1 << 15);

我想了解如何计算得出以下结果,例如: 12414

我对位掩码的工作原理一无所知,如果有人能给出一些提示并解释它如何达到这个数字,我将不胜感激。


问题答案:

该表达式(1 << n)等效于2的n次幂。

您撰写(1 << n) | (1 << m)本文时(1 << n) + (1 << m),只要n和相同,m就不同。因此,您可以根据需要以简单的添加方式来考虑它。

12414以二进制是11000001111110所以它是下列标志的总和(或按位OR):

交易1 << 1 = 2
卖1 << 2 = 4
可存储1 << 3 = 8
STORABLE_IN_WH 1 << 4 = 16
STORABLE_IN_LEGION_WH 1 << 5 = 32
易碎1 << 6 = 64
BLACK_CLOUD_TRADERS 1 << 12 = 4096
CAN_SPLIT 1 << 13 = 8192
=======================================
                         总计= 12414

请注意,当从右到左读取时,包含的标志对应于在12414的二进制表示形式中设置的位。



 类似资料:
  • 我试图找到/创建一个位旋转算法,该算法在-bit-count位掩码中生成s的所有

  • 我试图了解国际象棋编程中的位板表示是如何工作的,但我找不到关于一个细节的有用信息(或者只是无法正确翻译它^^)。我的问题是,如何自动生成掩码,以便在每个位置上移动每一个棋子。我假设它是一个矩阵,其中每个棋子类型都定义了他可以从该位置移动的每个字段(wP、bP、K、R、N、B的数组[5][64])。例如,对于下面的Rook on位置,只允许位置是: 我假设我必须为每一块类型和每一块瓷砖创建类似的东西

  • 介绍 Cpumasks 是Linux内核提供的保存系统CPU信息的特殊方法。包含 Cpumasks 操作 API 相关的源码和头文件: include/linux/cpumask.h lib/cpumask.c kernel/cpu.c 正如 include/linux/cpumask.h 注释:Cpumasks 提供了代表系统中 CPU 集合的位图,一位放置一个 CPU 序号。我们已经在 Ker

  • 问题内容: 我想做这样的事情: 您可以用Java这样做吗?(我来自ac#背景) 问题答案: 您可以轻松地使用

  • 问题内容: 在性能或灵活性方面,使用int vs varbinary存储位掩码是否有任何优势。 出于我的目的,我将始终在这些位掩码上进行读取(不进行写入或更新)。 问题答案: 绝对应该使用(如果需要32个标志)或(对于64个标志)。如果需要更多标志,则可以使用(但您可能还应该问自己,为什么在应用程序中需要这么多标志)。 此外,如果使用整数类型,则可以直接使用标准的按位运算符,而无需将字节数组转换为

  • 我试图编写一个函数来解码通过WebSocket连接发送到节点服务器的屏蔽缓冲区。结合使用RFC6455和一些旧的SO答案,这就是我迄今为止所做的: 此代码有两个问题: > 它不能正确地揭开消息掩码,只是输出乱码Unicode 它每次输出不同的解码消息,即使输入是恒定的 (有效负载长度永远不会超过126,因此不需要担心处理额外的字节)