So, it should
be pretty straightforward unless you assume that a char is
8 bits, with a signed char having a range of +/-255.
Signed 8 bits would be? -128
to +127.
<pedantic>
<!-- content generally known by everybody here -->
Well, he had previously mentioned NINE bits per character.
Besides, 9 bits and 18 bits improves the convenience of using octal
notation.
And not everything uses "2's-Complement" for sign.
Using "Sign-Magnitude" would give 8 bits a range of +/-127
There could be some special uses for negative zero.
IEEE representation of floating point also has some "special numbers",
otherwise we can't have ZERO (although 1 to an maximum "large"
negative exponent would be "close", even without the official
redefinition), along with using "Sign-Magnitude" for the whole thing, and
"bias"/"excess" for handling negative exponents)
But, for a bigger example, MS-DOS used a SIGNED (2's-Complement) 32 bit
number for file size! Giving files limits of -2147483648 and 2147483647.
If you put FFFF FFFF into an MS-DOS directory entry in the file size
field, it tells you -1. 00 00 00 80 (little endian byte order for
80000000) gives you -2147483648.
Unfortunately, copying a negative sized file onto a disk does not increase
free space. Hence the need for Stacker, DBLSPACE, and DRVSPACE while
waiting for "Moore's Law" to catch up on disk size.
I could never get some of my students to spell "Complement" right.
"We've come to NEGATE the variable, not to praise it!"
</pedantic>