sizes and negative ints (Was: 18 bit CPU; was: Speed now & then

Fred Cisin cisin at xenosoft.com
Thu Apr 12 15:13:11 CDT 2018


>> 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>


More information about the cctalk mailing list