The datatype for SQLite page says:
INTEGER. The value is a signed integer, stored in 0, 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value.
I'm not so sure on how we can store an integer using 0 bytes.
What does it mean?
You can't store any information in 0 bytes so in order to be able to store an integer with 0 bytes we must already know it's value.
And indeed two of the serial types do state an exact value as you can see by looking at the Record Format section of the Database File Format documentation:
Serial Type Content Size Meaning … … … 8 0 Value is the integer 0. (Only available for schema format 4 and higher.) 9 0 Value is the integer 1. (Only available for schema format 4 and higher.) … … …
So the integers 0 and 1 are entirely encoded in the header which determines the value as well and we don't need any additional bytes to store them.