Ich habe ein Array, das einen 16-Bit-Wert für jedes Bit in einem Array-Index enthält. Ich möchte ein "bitweises" XOR bestimmter Array-Elemente ausführen und dann alle Elemente um 1 verschieben (mit Wrapping).XOR- und Verschiebungsbits im Array
Insbesondere möchte ich XOR an den Array-Elementen verwenden, 2, 3 und 5 mit dem letzten Element, 16.
Dieser Code soll cyclisch sein, so dass, sobald es eine bestimmte Anzahl von Abschluss Zyklen (65535) sollte es auf den ursprünglichen Eingabewert zurückkehren.
Hier ist mein Code:
#include <iostream>
using namespace std;
void main()
{
//Initial array input
int state_array[16] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 };
int temp[1] = { 0 };
int array_size = sizeof(state_array)/(sizeof(temp[0]));
for (int i = 0; i<65535; i++)
{
temp[0] = state_array[15];
//XOR Values
for (int j = 0; j<16; j++) {
if ((j == 2 || j == 3 || j == 5) && state_array[15] == 1) {
state_array[j] = !state_array[j];
}
}
//Shift values
for (int j = array_size-1; j>0; j--)
{
if (j == 0) {
state_array[0] = temp[0];
}
else {
state_array[j] = state_array[j-1];
}
}
}
}
Was passieren soll, ist, dass nach 65535 Iterationen, die Array-Wert zurückgibt zurück 0000000000000001, aber dies nicht der Fall, und ich kann nicht herausfinden, warum. Ich fühle mich wie eine kleine, offensichtliche Sache, die ich in meinem Code übersehen habe, aber ich kann es nicht herausfinden.
Das Programm gibt 0001011111110010 aus. Ich habe das Ergebnis nach dem XOR und dem Schalten ausgedruckt und es scheint, dass etwas nicht stimmt, aber ich bin nicht 100% sicher. – Noobgineer