Re: [RFC] Integer Semantics
| From: | Dmitry Stogov | Date: | Wed, 20 Aug 2014 10:05:46 +0000 |
| Subject: | Re: [RFC] Integer Semantics | ||
| References: | 1 2 3 4 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-76726@lists.php.net to get a copy of this message | ||
On Wed, Aug 20, 2014 at 1:20 PM, Andrea Faulds <ajf@ajf.me> wrote:
>
> On 20 Aug 2014, at 06:52, Dmitry Stogov <dmitry@zend.com> wrote:
>
> > 1) INF conversion to zero seems wrong. May be +INF should be converted
> to MAX_LONG and -INF to MIN_LONG?
>
> I think of Infinity as more of an error value than an actual number. Not
> using MAX_LONG and MIN_LONG means it casts to the same value matter how
> large the integer type is, and it happens to be what JavaScript casts
> Infinity to. There’s also the fringe benefit that 1/0’s result in PHP,
> FALSE, casts to zero, as Infinity now would also, which is the standard
> IEEE 754 result for 1/0.
>
> > 3) a bit unrelated, but it also may make sense to introduce a logical
> right shift operator (>>> in Java)
>
The difference between "arithmetic" and "logical" shift is sign propagation..
0x10000000 >> 1 == 0x11000000
0x10000000 >>> 1 == 0x01000000
In C the same >> operator perform "arithmetic" shift for signed numbers and
"logical" shift for unsigned.
Thanks. Dmitry.
>
> How would that function?
> --
> Andrea Faulds
> http://ajf.me/
>
>
>
>
>