Давным давно, когда компьютеры были очень большими и очень медленными, оперативной памяти в них было мало и ее старались использовать максимально эффективно. Например у переменной типа bool есть всего два возможных значения (true и false), которые теоретически могут быть представлены одним битом, а по факту занимают целый байт памяти. Это происходит из за того, что переменные используют уникальные адреса памяти, которые выделяются в байтах. В результате переменная занимает всего 1 бит, а остальные 7 тратятся впустую.