Страницы

Поиск по вопросам

среда, 31 октября 2018 г.

Как заполнить область в байте?

Допустим, есть байт 0b00001000, для удобства разделю: 0 b 0000 - 1000
Как заполнить область в байте своим числом?
Вот пример, с 1 по 4 бит надо записать 0011, выйдет:
0 b 0000 - 0110
Или с 0 по 1 надо записать 11, выйдет:
0 b 0000 - 1011


Ответ

#include #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 x(555); // исходное число std::bitset v(val); std::bitset m(0); // битовая маска
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; }

Комментариев нет:

Отправить комментарий