配列インデックスの各ビットに16ビットの値を保持する配列を持っています。私がしたいことは、特定の配列要素の "ビット単位の"排他的論理和(XOR)を実行し、次にすべての要素を1つずつ(折り返しながら)シフトすることです。特に配列のXORとシフトビット
、Iは、アレイ素子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に返すということですが、これは発生しませんし、私はその理由を把握することはできません。私は自分のコードで見落とされている、小さくて明白なものだと感じますが、わかりません。あなたがループ条件用としてj == 0
条件を打つことは決してありませんシフト部で
プログラムは0001011111110010を出力します。XORとシフト後に結果を印刷していましたが、シフトに何か問題がありますが、100%確実ではないようです。 – Noobgineer