Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Bit Operations

Boost , Chapter 1. Boost.Multiprecision , Examples

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

В этом примере мы покажем, как можно манипулировать отдельными битами внутри целого числа, мы начнем с часто необходимого вычисления2n- 1, которое мы, очевидно, могли бы реализовать следующим образом:

using boost::multiprecision::cpp_int;
cpp_int b1(unsigned n)
{
   cpp_int r(1);
   return (r << n) - 1;
}

Звонок:

std::cout << std::hex << std::showbase << b1(200) << std::endl;

Доходность, как и ожидалось:

0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Тем не менее, мы могли бы в равной степени просто установить бит в результате, как это:

cpp_int b2(unsigned n)
{
   cpp_int r(0);
   return --bit_set(r, n);
}

Обратите внимание, как функция<bit_set>устанавливает указанный бит в своем аргументе, а затем возвращает ссылку на результат, который затем мы можем просто уменьшить. Призыв<b2>— это то же самое, что призыв<b1>.

Мы можем одинаково тестировать биты, поэтому, например, n-й бит результата, возвращаемого из<b2>, не должен быть установлен, если мы не увеличиваем его сначала:

assert(!bit_test(b1(200), 200));     // OK
assert(bit_test(++b1(200), 200));    // OK

И, конечно, если мы перевернем n-й бит после увеличения, то мы должны вернуться к нулю:

assert(!bit_flip(++b1(200), 200));   // OK

PrevUpHomeNext

Статья Bit Operations раздела Chapter 1. Boost.Multiprecision Examples может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Examples ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-07-04 20:49:54/0.005673885345459/0