Boost logo

Boost Users :

Subject: Re: [Boost-users] max value by the number of bits
From: Vicente J. Botet Escriba (vicente.botet_at_[hidden])
Date: 2013-02-06 12:08:08


Le 06/02/13 00:59, Christian Henning a écrit :
>> low_bits_mask_t<Bits>::sig_bits is defined as
>> (~( ~(unsigned_int(0u )) << Bits )) )
>>
>> which is equivalent to 2^Bits-1 without risk of overflow.
>>
> Vicente, what's unsigned_int?
>
It is an unsigned type with at least Bits bits. It depends on what do
you want, speed or size.

low_bits_mask_t<Bits>::sig_bits uses the smallest unsigned int and low_bits_mask_t<Bits>::sig_bits_fast uses the fastest one.

"
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;
};

      Group Bit-Mask Class Template

The |boost::low_bits_mask_t| class template provides constants for bit
masks equivalent to the value (2^Bits - 1), where |Bits| is the template
parameter. The parameter |Bits| must be a non-negative integer from zero
to /Max/, where Max is the number of bits supported by the largest,
unsigned, built-in integral type. The following table describes the
members of |low_bits_mask_t|.

*Table 3. Members of the [^boost::low_bits_mask_t] Class Template*

Member

        

Meaning

|least|

        

The smallest, unsigned built-in type that supports the given bit count.

|fast|

        

The easiest-to-manipulate analog of |least|.

|sig_bits|

        

A |least| constant of the desired bit-masking value.

|sig_bits_fast|

        

A |fast| analog of |sig_bits|.

|bit_count|

        

The value of the template parameter, in case its needed from a renamed
instantiation of the class template.

"

Vicente



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net