我有一个数组,它在数组索引中保存一个16位值。我想要做的是执行特定数组元素的“按位”异或,然后将所有元素移动1(包装)。
特别是,我想在数组元素2,3和5上使用XOR和最后一个元素16。
这段代码应该是循环的,这样一旦它完成了特定的循环次数(65535),就应该返回原始输入值。
这是我的代码:
@foreach (service_provider SP in ViewBag.service_provider) {
<tr>
<td>@SP.Sp_email</td>
<td>@SP.Sp_name</td>
<td>@SP.city.Cityname</td>
</tr>}@foreach (picture img in ViewBag.pictures){
<tr>
<td><img src="data:image/png;base64,@Convert.ToBase64String(img.pic,0,img.pic.Length)" width="100" />
</td>
</tr>
}
应该发生的是,在65535次迭代之后,数组返回值0000000000000001,但这不会发生,我无法弄清楚原因。我觉得这是我在代码中忽略的一个小而明显的事情,但我无法理解。
答案 0 :(得分:1)
在转换部分,您永远不会达到j == 0
条件,因为您的for循环条件为j > 0
答案 1 :(得分:1)
问题是您没有正确编制索引。而不是你的声明使XORing看起来像这样:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void main()
{
vector<string> Names;
string Name;
Names.reserve(20); // optional
cout << " Enter your names to be sorted\n";
cout << "To exit just press [Enter] at any time\n";
do
{
cout << Names.size() << endl;
cout << "\n< Name " << (Names.size() + 1) << " > = ";
if ((!getline(cin, Name)) || Name.empty())
break;
Names.push_back(Name);
}
while (true);
cout << "\nFinal Name Amount = " << Names.size() << endl << endl;
}
它需要为0索引,而不是1,并且应该如下所示:
if ((j == 2 || j == 3 || j == 5) && state_array[15] == 1) {
state_array[j] = !state_array[j];
}
具有讽刺意味的是,您的if ((j == 1 || j == 2 || j == 4) && state_array[15] == 1) {
state_array[j] = !state_array[j];
}
是正确的,只有state_array[15]
,2
和3
需要修复。
此外,您的5
循环的条件for
不仅仅是j>=0
。