I need only one bit to represent my data - 1 or 0. What is the best way to do so in C? The "normal" data types are too large.
The smallest data type is a byte, which is 8 bits. Each bit can be a 0 or 1.
A bit is a binary digit, the smallest increment of data on a computer. A bit can hold only one of two values: 0 or 1, corresponding to the electrical values of off or on, respectively. Because bits are so small, you rarely work with information one bit at a time.
You could create
typedef struct foo { unsigned x:1; } foo;
Where you have told the compiler that you'll only be using one bit of x
.
But due to structure packing arrangements (the C standard is intentionally flexible in order that compilers can optimise according to the machine architecture), it may well turn out that this still occupies as much space in memory as a regular unsigned
and an array of foo
s doesn't have to be bitwise contiguous.
If you really want, you can create a structure with a member variable , bit-fielded to 1 bit.
Remember, the data type of the member variable needs to be unsigned
, as you need to store 0
and 1
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With