Допустим, есть байт 0b00001000, для удобства разделю: 0 b 0000 - 1000
Как заполнить область в байте своим числом?
Вот пример, с 1 по 4 бит надо записать 0011, выйдет:
0 b 0000 - 0110
Или с 0 по 1 надо записать 11, выйдет:
0 b 0000 - 1011
Ответ
#include
int main()
{
unsigned int from = 3; // начиная с 4-го бита
unsigned int to = 6; // по 6 бит
unsigned int val = 11; // записать это значение
const int BIT_COUNT = sizeof(unsigned int) * CHAR_BIT;
std::bitset
std::cout << "x = " << x << std::endl;
std::cout << "value = " << v << std::endl;
m.flip();
m <<= to - from + 1;
m.flip();
m <<= from;
m.flip();
std::cout << "mask = " << m << std::endl;
x = x & m;
v <<= from;
x = x | v;
std::cout << "res = " << x << std::endl;
return 0;
}
Комментариев нет:
Отправить комментарий