我有一個數組,它包含一個數組索引中每個位的16位值。我想要做的是執行特定數組元素的「按位」XOR,然後將所有元素移過1(包裝)。XOR和移位數組中的位
特別地,我想在陣列元件2,3使用XOR,和5最後一個元素,16
此代碼被認爲是循環的,使得一旦它已經完成了特定數目的週期(65535),它應該返回到原始輸入值。
這裏是我的代碼:
#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];
}
}
}
}
希望發生的事情是,經過65535次迭代,數組返回到值0000000000000001,但這種情況不會發生,我無法找出原因。我覺得這是我在代碼中忽略的一個小小的,顯而易見的事情,但我無法弄清楚。
程序輸出0001011111110010.我在XOR和移位後打印結果,看起來移位有問題,但我不是100%確定的。 – Noobgineer