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