You can logically represent 5 as three bits, but neither the filesystem nor the memory management system (for RAM) will let you address space in units smaller than one byte.
If you had eight of these numbers, you could pack them into 24 bits = 3 bytes and store those "efficiently" in memory or a file. Efficiently in quotes, because while you save some space, it becomes difficult to work with the packed data as you need to bit-shift things around a lot. CPU instructions, memory loads, array indexing etc all don't work with less-than-byte units.
The most practical way would be to just use a whole byte for your three bits and live with the overhead.