Тема: Зміна бітів на протилежні в unsigned int
Потрібно замінити біти на протилежні в unsigned int, а тоді вивести нове unsigned int.
Робив ось так:
unsigned int reverse_bits(unsigned int n)
{
std::bitset<sizeof(unsigned int) * CHAR_BIT> n_bits(n);
std::cout << (unsigned int)(n_bits.flip().to_ulong()) << std::endl;
std::cout << (~n) << std::endl;
std::string new_bits = std::bitset<sizeof(unsigned int) * CHAR_BIT>(n).to_string();
new_bits.erase(0, new_bits.find_first_not_of('0'));
std::bitset<sizeof(char) * CHAR_BIT> second_bits(new_bits);
std::cout << (unsigned int)(second_bits.flip().to_ulong()) << std::endl;
return 0;
}
Але в результаті виходить завелике число, бо всі попередні нулі перетворюються в одиниці.
Пробував обрізати за допомогою string, усе одно виходить хибна відповідь.