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

Integer Masks

Boost , Boost.Integer , Boost.Integer

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

Шаблоны классов вПредоставьте битовые маски для определенного битового положения или смежного битового пакета определенного размера. Типы констант маскировки исходят из шаблонов выборацелых типовзаголовка.

#include <cstddef>  // for std::size_t
namespace boost
{
template <std::size_t Bit>
struct high_bit_mask_t
{
    typedef implementation-defined-type  least;
    typedef implementation-defined-type  fast;
    static const least       high_bit       = implementation-defined;
    static const fast        high_bit_fast  = implementation-defined;
    static const std::size_t bit_position   = Bit;
};
template <std::size_t Bits>
struct low_bits_mask_t
{
    typedef implementation-defined-type  least;
    typedef implementation-defined-type  fast;
    static const least       sig_bits       = implementation-defined;
    static const fast        sig_bits_fast  = implementation-defined;
    static const std::size_t bit_count      = Bits;
};
// Specializations for low_bits_mask_t exist for certain bit counts.
}  // namespace boost

Шаблон класса<boost::high_bit_mask_t>предоставляет константы для битовых масок, представляющих бит в определенном положении. Маски эквивалентны значению 2бит, где<Bit>является параметром шаблона. Положение бита должно быть неотрицательным числом от нуля доМакса, где Макс на один меньше числа битов, поддерживаемых крупнейшим неподписанным встроенным интегральным типом. В следующей таблице описаны члены инстанциации<high_bit_mask_t>.

Table 2. Members of the boost::high_bit_mask_t Class Template

член

значение

<least>

Самый маленький, неподписанный, встроенный тип, который поддерживает заданную битовую позицию.

<fast>

Самый простой в обращении аналог<least>

.

<high_bit>

A<least>константа значения 2бит.

<high_bit_fast>

<fast>аналог<high_bit>

.

<bit_position>

Значение параметра шаблона, в случае его необходимости от переименованной инстанциации шаблона класса.


Шаблон класса<boost::low_bits_mask_t>предоставляет константы для битовых масок, эквивалентные значению (2бит- 1), где<Bits>является параметром шаблона. Параметр<Bits>должен быть неотрицательным целым числом от нуля доМакса, где Макс — число битов, поддерживаемых крупнейшим, неподписанным, встроенным интегральным типом. В следующей таблице описаны члены<low_bits_mask_t>.

Table 3. Members of the boost::low_bits_mask_t Class Template

член

значение

<least>

Самый маленький, неподписанный встроенный тип, который поддерживает заданное количество битов.

<fast>

Самый простой в обращении аналог<least>

.

<sig_bits>

A<least>постоянная желаемого значения битовой маскировки.

<sig_bits_fast>

<fast>аналог<sig_bits>

.

<bit_count>

Значение параметра шаблона, в случае его необходимости от переименованной инстанциации шаблона класса.


Когда<Bits>является точным размером встроенного неподписанного типа, реализация должна измениться, чтобы предотвратить неопределенное поведение. В этом случае<low_bits_mask_t>можно использовать в качестве основы.

#include <boost/integer/integer_mask.hpp>
//...
int main()
{
    typedef boost::high_bit_mask_t<29>  mask1_type;
    typedef boost::low_bits_mask_t<15>  mask2_type;
    mask1_type::least  my_var1;
    mask2_type::fast   my_var2;
    //...
    my_var1 |= mask1_type::high_bit;
    my_var2 &= mask2_type::sig_bits_fast;
    //...
}

Программаinteger_mask_test.cppпредставляет собой упрощенную демонстрацию результатов от инстанцирования различных примеров шаблонов класса битовой маски.

Шаблоны классов в этом заголовке являются расширениемцелых шаблонов классов выбора типов. Новые шаблоны классов предоставляют одинаковые типы размеров, но также удобные маски для использования при извлечении самых высоких или всех значительных битов, когда содержащий встроенный тип содержит больше битов. Это предотвращает загрязнение значений более высокими, неиспользованными битами.

Автор шаблонов класса битовой маски BoostДэрил Уокер.


PrevUpHomeNext

Статья Integer Masks раздела Boost.Integer Boost.Integer может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Boost.Integer ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 19:49:55/0.009152889251709/1