У меня есть двоичная строка, и я хотел бы выполнить операцию xor последовательно на нескольких битах этой строки. моя строка:Как правильно выполнить операцию xor?
я пытаюсь выполнить расчет, используя следующую строку кода:
private String ParityCalc(String str){
char[] cA = str.toCharArray();
int[] D = new int[6];
D[0] = D29^cA[0]^cA[1]^cA[2]^cA[4]^cA[5]^cA[9]^cA[10]^cA[11]^cA[12]^cA[13]^cA[16]^cA[17]^cA[19]^cA[22];
D[1] = D30^cA[1]^cA[2]^cA[3]^cA[5]^cA[6]^cA[10]^cA[11]^cA[12]^cA[13]^cA[14]^cA[17]^cA[18]^cA[20]^cA[23];
D[2] = D29^cA[0]^cA[2]^cA[3]^cA[4]^cA[6]^cA[7]^cA[11]^cA[12]^cA[13]^cA[14]^cA[15]^cA[18]^cA[19]^cA[21];
D[3] = D30^cA[1]^cA[3]^cA[4]^cA[5]^cA[7]^cA[8]^cA[12]^cA[13]^cA[14]^cA[15]^cA[16]^cA[19]^cA[20]^cA[22];
D[4] = D30^cA[0]^cA[2]^cA[4]^cA[5]^cA[6]^cA[8]^cA[9]^cA[13]^cA[14]^cA[15]^cA[16]^cA[17]^cA[20]^cA[21]^cA[23];
D[5] = D29^cA[2]^cA[4]^cA[5]^cA[7]^cA[8]^cA[9]^cA[10]^cA[12]^cA[14]^cA[18]^cA[21]^cA[22]^cA[23];
for (int i = 0; i < 6; i++){
if (D[i] == 48){
D[i] = 0;
} else if (D[i] == 49){
D[i] = 1;
}
}
StringBuilder parity = new StringBuilder();
parity.append(D[0]).append(D[1]).append(D[2]).append(D[3]).append(D[4]).append(D[5]);
D29 = D[4];
D30 = D[5];
return parity.toString();
}
результат, который я получаю для окончательной проверки четности: 100000. правильный результат должен быть: 001001.
D29 и D30 - это биты четности, выполненные по предыдущим вычислениям, оба являются целыми числами.
что я делаю неправильно и как я могу это исправить? я должен, вероятно, сделать это как побитую операцию, но я не могу понять, как это понять. любая помощь будет оценена.
Почему бы не преобразовать строку в целое число и сделать это снова? –
, потому что операция последовательна на нескольких битах. как вы могли бы это сделать? –
Прежде всего, исходная двоичная строка может быть преобразована в целое число, конкретные биты, которые нужно извлечь, также могут быть построены для другого целого. Это зависит. –