Приветствую! Я начинающий программист, поэтому, если вопрос "детский" - не стоит врубать быка. Есть лабораторка, в которой нужно выполнить XOR шифрование массива вещественных чисел (double), с оговоркой, что перед этим нужно выполнить побитовый сдвиг вправо каждого числа. Как обойти то, что с double переменными не применяются битовые операции сдвига? Или мне нужно выполнять сдвиг после приведения в char?
С шифрованием, вроде, разобрался:
std::vector<double> arrDouble = { 3.0, 4.0, 5.0 };
char key = 'r';
int size = sizeof(arrDouble);
for (int i = 0; i < arrDouble.size(); i++)
{
std::cout << "My array: " << arrDouble[i] << " ";
}
std::cout << "\n\nCripted arr: ";
for (int i = 0; i < arrDouble.size(); i++)
{
unsigned char* item = reinterpret_cast<unsigned char*>(&arrDouble[i]);
for (int j = 0; j < sizeof(double); j++)
{
*(item + j) ^= key;
}
}
for (int i = 0; i < arrDouble.size(); i++)
{
std::cout << arrDouble[i] << " ";
}
std::cout << "\n\n";
system("pause");
return 0;
sizeof(arrDouble)
вернет 24, а не 3 как ожидается в цикле for
Битовый сдвиг. Ты прав, надо сначала кастить к unsigned типу, потом делать сдвиг. Только не понятен один момент. После побитового сдвига ты навсегда потеряешь младший бит, как потом будешь декодировать число назад?
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть код, который представлен нижеНужно переделать его с использованием функции для проверки четности введенного числа
Проект на C++ собирается Visual Studio 2015UAC Execution Level выставлен в asInvoker, но почему-то 32-битная версия приложения требует права администратора, а 64-битная...
Здравтсвуйте! Как объявить массив глобыльно, что бы можно было в него записывать и обращаться из всех cpp? Пробовал сделать так
В задаче необходимо вывести имена учащихся без троек, двоек и коловОднако моя программа выводит имена всех введенных учащихся