C++ cout函数打印
C++ cout function print
为什么这个功能:
uint64_t rot_xor(uint64_t a1, uint64_t a2) {
int size = sizeof(a1)*4;
cout<<" "<<"size:"<<bitset<8>(size).to_string()<<" "<<size;
int shift;
uint64_t output = 0;
cout<<endl;
for (shift = 0; shift < size; shift++)
if(a1&(1<<shift)) {
output ^= (a2 << shift) | (a2 >> (size - shift));
cout << bitset<64>(output).to_string()<<endl;
}
return output;
}
打印输出:
- : size:00010000 20
- : 0000000000000000000000000000000010110000110000011111001011111001
点1
如果问题是为什么您的程序打印 20 的结果似乎是 sizeof(uint64_t) * 4
而不是 32,那是因为在调用 rot_xor
之前的几行中有一个:
cout << hex
事实上,在您发布的 link 中可以看到的确切输出是
size:00100000 20
或二进制和十六进制表示中的 32。
点 2
我不知道你的预期输出应该是什么样的。
为什么这个功能:
uint64_t rot_xor(uint64_t a1, uint64_t a2) {
int size = sizeof(a1)*4;
cout<<" "<<"size:"<<bitset<8>(size).to_string()<<" "<<size;
int shift;
uint64_t output = 0;
cout<<endl;
for (shift = 0; shift < size; shift++)
if(a1&(1<<shift)) {
output ^= (a2 << shift) | (a2 >> (size - shift));
cout << bitset<64>(output).to_string()<<endl;
}
return output;
}
打印输出:
- : size:00010000 20
- : 0000000000000000000000000000000010110000110000011111001011111001
点1
如果问题是为什么您的程序打印 20 的结果似乎是 sizeof(uint64_t) * 4
而不是 32,那是因为在调用 rot_xor
之前的几行中有一个:
cout << hex
事实上,在您发布的 link 中可以看到的确切输出是
size:00100000 20
或二进制和十六进制表示中的 32。
点 2
我不知道你的预期输出应该是什么样的。