如何在Java中创建32位掩码

时间:2013-11-10 06:43:05

标签: java bit-manipulation bit

到目前为止,我有这个代码来创建16位掩码。但是我不知道如何使用这种方法创建32位掩码。有任何想法吗?

编辑:我想创建32个32位掩码,每个掩码的各自位为1,其余位为零。例如:掩码1的最左位为1而其余位为零,掩码2的最左边的位为1而其余位为零。我不知道如何更简洁地解释,但我希望你们能得到这个想法......

mask = new int[16];
mask[0] = 0x8000;
mask[1] = 0x4000;
mask[2] = 0x2000;
mask[3] = 0x1000;

mask[4] = 0x0800;
mask[5] = 0x0400;
mask[6] = 0x0200;
mask[7] = 0x0100;

mask[8] = 0x0080;
mask[9] = 0x0040;
mask[10] = 0x0020;
mask[11] = 0x0010;

mask[12] = 0x0008;
mask[13] = 0x0004;
mask[14] = 0x0002;
mask[15] = 0x0001

2 个答案:

答案 0 :(得分:7)

以下是如何在Java中创建32位掩码。

int mask = 0x00010000;  // for example.

如果你想创建一个32位掩码,其中N位设置

int mask = 1 << N;  // Assumes the rightmost bit is numbered zero ...

如果你想创建一个蒙版数组,那么就以一种显而易见的方式在循环中执行上述操作。

int[] masks = new int[32];
for (int n = 0; n < 32; n++) {
    masks[n] = 1 << n;
}

实际上,假设的“16位掩码”也是32位掩码,因为int是Java中的32位类型。

和@Matt Ball一样,我对你真正想做的事情感到困惑,而你是否正在努力实现它是一种明智的方式。为什么在使用较少的代码动态创建掩码时需要一组掩码?

答案 1 :(得分:-3)

我认为你做得很好。

AMOUNT_OF_BITS = 32;
mask = new long[AMOUNT_OF_BITS];
for (long i = 0; i < AMOUNT_OF_BITS; i++)
{
    mask[i] = Math.pow(2,i);
}

我认为这应该有效。