|  | Posted by Chung Leong on 07/04/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] |