+3

Is there any datatypes with size less than a byte? (C++)

Hello, I'm trying to create a number datatype, which uses boolean arrays like bits and works like a number and lacks some weaknesses of integers and floats. I'm not happy with booleans, because they require 1 byte for only 2 possibilities, is there any datatypes that require less than a byte of memory? I'm searching for a boolean like datatype which requires only 1 bit of memory. By default I would be changing booleans to signed shorts or even bytes, but they would be harder to handle than booleans.

3/4/2020 8:12:55 AM

Seb TheS

6 Answers

New Answer

+4

You can't allocate anything less than a byte, the CPU does not have the ability to store only 1 bit without using up an entire byte. What it can do is store multiple bits at once so instead of using 1 boolean you'll have to use booleans in sets of 8.

+2

C allows you to spilt integers into bit fields. A 32 bit int can be used as 8 x 4 bit numbers, or for your case 32 single bit numbers. C++ has bitset which is a container that behaves like an array of bits. This may be close to what you want already.

+2

Jared Bird Could you give an example of bitset usage?

+2

Check this out. https://www.geeksforgeeks.org/c-bitset-and-its-application/

+2

Seb TheS The link from Fernando Pozzetti is quite informative. Just ask if you are not sure about anything.

+2

std::vector<bool> is optimized to pack 8 values per byte. Also, keep in mind that if you add numbers one bit at a time that's going to be at least 8 times slower than adding them one byte at a time and at least 32 times slower than adding them one 32-bit int at a time.