uoh*_*ela 2 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
Run Code Online (Sandbox Code Playgroud)
以下是如何在Java中创建32位掩码.
int mask = 0x00010000; // for example.
Run Code Online (Sandbox Code Playgroud)
如果你想创建一个32位掩码,然后设置N位
int mask = 1 << N; // Assumes the rightmost bit is numbered zero ...
Run Code Online (Sandbox Code Playgroud)
如果你想创建一个掩码数组,那么只需要以一种显而易见的方式在循环中执行上述操作.
int[] masks = new int[32];
for (int n = 0; n < 32; n++) {
masks[n] = 1 << n;
}
Run Code Online (Sandbox Code Playgroud)
实际上,你所谓的"16位掩码"也是32位掩码,因为它int是Java中的32位类型.
就像@Matt Ball一样,我对你真正想要做的事感到困惑,而你是否正在努力实现它是一种明智的方式.当你可以用更少的代码动态创建一个掩码时,为什么还需要一个掩码数组?