對於這個練習我讓我想要一個十進制< 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