Имеется такая задача:
Установить в 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;
Желательно с подробным объяснением
Сталкивался уже с подобной задачей, которая звучала как-то так:
Установить в 0 n битов в числе А влево от позиции p
char buffer[33];
std::cout << "Enter number A: ";
int a;
std::cin >> a;
_itoa_s(a, buffer, 2);
std::cout << "A in binary = " << buffer << '\n';
std::cout << "How much bits your are want to make into '0': ";
int n;
std::cin >> n;
int position = -1;
while (position < 1)
{
std::cout << "From what position would you like to do it: ";
std::cin >> position;
}
unsigned int mask = (1 << n) - 1;
a &= ~(mask << (position - 1));
_itoa_s(a, buffer, 2);
std::cout << "\nA in binary after all transformations: " << buffer << "\nIt's " << a << " in decimal.\n";
Вот Вам способ замены конкретного бита на 0 или же на 1, как прикрутить сюда обработку нескольких битов, я думаю вы знаете)
#include <iostream>
#include <bitset>
int main()
{
auto n{0b100001};
unsigned int pos{1}; // позиция бита
if (pos >= sizeof(n)) {
return -1;
}
bool new_bit{1}; // 0 или 1 (что задать в бит на pos) bool для защиты от мусора ибо если указать что-то отличное - будет нп
std::cout << "before : " << std::bitset<16>(n) << std::endl;
n = (n & ~(1UL << pos)) | (new_bit << pos);
std::cout << "after : " << std::bitset<16>(n) << std::endl;
return 0;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть вот такой вызов ajax, который работает по клику на option
Код в индекс хтмл
Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение
У меня есть компонент User, который рендерит компоненты UserAuth и UserProfileКомпонент User хранит access_token, который получает из UserAuth