Internal storage is partitioned into a few (or more) partitions - download, recovery, system, vendor, etc. Only 1, userdata, is available for you. That's just the way Android works. The OS seldom takes up more than 8GB - if you're subtracting free space from 32GB and coming up with 28GB, your math is wrong. You have to subtract all the partitions other than userdata. (Learn a little Linux [which is the OS that Android runs in], install a terminal app, and look at the internals of the phone. The df command will give you some idea.)