Имеется такая задача:
Установить в 0 в числе А n битов вправо от позиции p, заменить ими m битов числа В, начиная с позиции q.
И моя попытка решить ее, но происходит не установка битов в 0, а инвертирование
int A, n, p; char num[33];
cout << "Введите число А ";
cin >> A;
cout << endl;
cout << "Введите c какого бита начинать замену ";
cin >> p;
cout << endl;
cout << "Скольно битов заменяем на 0 ";
cin >> n;
cout << endl;
//Просто вывод числа в двоичном виде
_itoa_s(A, num, 2);
cout << "Число А в двоичном виде: " << num << endl;
//Создаю маску, одна равна единице, которая сдвинута на p-1 влево
unsigned int mask = 1 << p-1;
//Далее идет замена в нули, но т.к. я не знаю, как правильно это сделать, происходит инвертирование
for (int i = 0; i <= n; i++) {
A ^= mask;
mask <<= 1;
}
_itoa_s(A, num, 2);
cout << "Итоговое число: " << num << endl;