Thread overview
bit array
Feb 07, 2007
Orgoton
Feb 07, 2007
Frits van Bommel
Feb 07, 2007
Sean Kelly
February 07, 2007
When I declare

bit flags[120];

How much memory does this consure? 120 Bytes or 120 bits (packing).
It would be a pain to make something like "long flags1, flags2..." and "if (flags1 & FLAGMASK) ..." to conserve memory.
February 07, 2007
Orgoton wrote:
> When I declare
> 
> bit flags[120];
> 
> How much memory does this consure? 120 Bytes or 120 bits (packing).
> It would be a pain to make something like "long flags1, flags2..." and "if (flags1 & FLAGMASK) ..." to conserve memory.

It used to only consume 120 bits, when 'bit' was still a basic type.
There were some issues with that though, so now 'bit' is just a backwards-compatibility alias to 'bool'. Since 'bool' is a 1-byte type (typically) that means it'll consume 120 bytes.
February 07, 2007
Frits van Bommel wrote:

> Orgoton wrote:
>> When I declare
>> 
>> bit flags[120];
>> 
>> How much memory does this consure? 120 Bytes or 120 bits (packing).
>> It would be a pain to make something like "long flags1, flags2..." and
>> "if (flags1 & FLAGMASK) ..." to conserve memory.
> 
> It used to only consume 120 bits, when 'bit' was still a basic type. There were some issues with that though, so now 'bit' is just a backwards-compatibility alias to 'bool'. Since 'bool' is a 1-byte type (typically) that means it'll consume 120 bytes.

As a note to this you can use std.BitArray in phobos to have a true bit
array.
Not sure what the Tango equivalent is.

http://digitalmars.com/d/phobos/std_bitarray.html


February 07, 2007
Tomas Lindquist Olsen wrote:
> Frits van Bommel wrote:
> 
>> Orgoton wrote:
>>> When I declare
>>>
>>> bit flags[120];
>>>
>>> How much memory does this consure? 120 Bytes or 120 bits (packing).
>>> It would be a pain to make something like "long flags1, flags2..." and
>>> "if (flags1 & FLAGMASK) ..." to conserve memory.
>> It used to only consume 120 bits, when 'bit' was still a basic type.
>> There were some issues with that though, so now 'bit' is just a
>> backwards-compatibility alias to 'bool'. Since 'bool' is a 1-byte type
>> (typically) that means it'll consume 120 bytes.
> 
> As a note to this you can use std.BitArray in phobos to have a true bit
> array.
> Not sure what the Tango equivalent is.

tango.core.BitArray.  The implementation is essentially the same.


Sean