Float:16

Herber rjh at ihlpa.UUCP
Sat Oct 5 06:11:28 AEST 1985


> > > > Then you can define
> > > > 
> > > > float foo:16;
> > > > 
> > > > if you really think you can do something useful with 16-bit floats. Someone
> > > > must use them for something...
> > > 
> > > Just such a construct is used in the accounting software in many UNIX System
> > > kernels.  It seems to suffice for the application.
> > 
> > Great, a violation of the C language spec in the kernel.
> 
> Not really. I haven't axually seen it, but here's my theory:
> There must be a union of short[2] & float somewhere in the (which?) 
> kernel. The magic numbers are computed in float and the short[0] is
> written out to a file, the lower mantissa bits being deemed worthless.
> Not a violation, just (nonportable) bit fiddling.
> 
> 	jim		cottrell at nbs
> */
> ------

The "float:16" construct is contructed in a machine-independent fashion in the
accounting routines by shifting bits and or-ing. The values are always positive;
therefore there is no mantissa sign bit. And, since the values are integers,
the exponent field is not offset. The values are using to accumulate values
like CPU-clockticks used by a process against a uid. The "floating-point"
(I would call it "scaled integer") format is used to support a large dynamic range.

Randolph J. Herber



More information about the Comp.lang.c mailing list