ID:               42694
 Comment by:       smlerman at gmail dot com
 Reported By:      carrotcake1029 at gmail dot com
 Status:           Open
 Bug Type:         Math related
 Operating System: Windows Vista Home Premium
 PHP Version:      5.2.4
 New Comment:

It's most likely because the number you're using is greater than the
maximum for a 32-bit signed integer, resulting in an integer overflow.
Try it with a smaller number and see what happens.


Previous Comments:
------------------------------------------------------------------------

[2007-09-18 07:08:32] carrotcake1029 at gmail dot com

Description:
------------
I wrote my own little function that can take numbers and make turn them
into numbers of other bases.  When I ran a few tries with binary, I
began to notice that PHP's decbin() was not matching up with mine. 
Easily proven, mine was correct.

Reproduce code:
---------------
echo dec2base(4728937489, 2) . "\n";
echo decbin(4728937489);

function dec2base($int, $base)
{
        while ($int >= 1)
        {
                $ret .= $int % $base;
                $int = $int / $base;
        }
        return strrev($ret);
}

Expected result:
----------------
100011001110111011101110000010001
100011001110111011101110000010001

Actual result:
--------------
100011001110111011101110000010001
11001110111011101110000010001


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=42694&edit=1

Reply via email to