|
Posted by Chung Leong on 09/28/21 11:37
Palle Hansen wrote:
> yawnmoth wrote:
> > Using >> normally shifts bits to the right x number of times, where x
> > is specified by the programmer. As an example, 0x40000000 >> 8 yields
> > 0x00400000. This makes me wonder... why doesn't the same thing happen
> > with 0x80000000 >> 8? The number it yields is 0xff800000 - not
> > 0x00800000. The following script better demonstrates this:
> >
> > <?
> > echo sprintf('%08x',0x40000000 >> 8)."\n";
> > echo sprintf('%08x',0x80000000 >> 8);
> > ?>
> >
> > Anyway, any ideas?
>
> My guess is that PHP sees 0x8000000 as a *signed* integer
No, PHP sees 0x80000000 as a double, because the number is beyond the
range of an integer (on 32 bit systems).
Navigation:
[Reply to this message]
|