对于这个练习我让我想要一个十进制< 4096在二进制形式写入一个int数组。Java十进制到二进制int数组
因此,例如,4
将是{0,0,0,0,0,0,0,0,0,1,0,0}
。我需要这个(几乎)所有的整数多达4096个,所以我写了这段代码:
for(int k=0; k<4096; k++){
int[] myNumber = { (k/2048) % 2, (k/1024) % 2, (k/512) % 2, (k/256) % 2, (k/128) % 2, (k/64) % 2, (k/32) % 2, (k/16) % 2, (k/8) % 2, (k/4) % 2, (k/2) % 2, (k/1) % 2 }
/* Some processing */
}
这看起来有点丑,所以这就是为什么我很好奇,看看是否有实现这个更优雅的方式?
对于有兴趣的读者:
我选择用于存储所述的二进制数的阵列的方法,因为我需要执行一些移位和加法模2我使用的LFSR,并且这是我的执行情况如下:
public class LFSR {
private int[] polynomial;
public LFSR(int[] polynomial) {
this.polynomial = polynomial;
}
public int[] shiftLeft(int[] input) {
int[] result = new int[input.length];
int out = input[0];
result[input.length - 1] = out;
for (int i = input.length - 1; i > 0; i--) {
result[i - 1] = (input[i] + polynomial[i - 1] * out) % 2;
}
return result;
}
}
有什么建议吗?
位运算符:http://vipan.com/htdocs/bitwisehelp.html http://www.leepoint.net/notes-java/data/expressions/bitops.html。也许你甚至不需要int数组。 – madth3 2012-03-22 20:21:52