Home > Article > Backend Development > Why Does a Boolean Occupy 1 Byte in C Instead of 1 Bit?
Why Bools Are 1 Byte Instead of 1 Bit
In C , the bool datatype occupies 1 byte of memory, raising the question as to why it isn't allocated a mere 1 bit. This size discrepancy stems from the limitations of the underlying hardware, specifically the central processing unit (CPU).
CPU Memory Addressing
CPUs possess a fundamental constraint: they can only read and write memory in chunks called bytes, which typically consist of 8 bits. This means that the CPU cannot directly access a single bit within memory. Instead, it must fetch the entire byte containing that bit.
Consequence for Booleans
For booleans, which can only represent two values (true or false), allocating 1 bit would be sufficient storage space. However, since the CPU operates at the byte level, a boolean must be stored in an entire byte. This ensures that the CPU can efficiently access the boolean's value.
Additional Considerations
The same reasoning applies to the absence of datatypes with sizes between 1 bit and 1 byte. If such datatypes existed, the CPU would be forced to use more memory than necessary to store them. This overhead would introduce inefficiencies in memory usage and overall performance.
Therefore, the size of a boolean in C (and other programming languages) is a direct result of the limitations of the underlying hardware, specifically the CPU's inability to address memory at a finer granularity than a byte.
The above is the detailed content of Why Does a Boolean Occupy 1 Byte in C Instead of 1 Bit?. For more information, please follow other related articles on the PHP Chinese website!