[MacRuby-devel] [MacRuby] #748: 32bit Number Limit and Conversion
MacRuby
ruby-noreply at macosforge.org
Mon Jun 14 15:15:20 PDT 2010
#748: 32bit Number Limit and Conversion
-----------------------------+----------------------------------------------
Reporter: lp@… | Owner: lsansonetti@…
Type: defect | Status: new
Priority: major | Milestone: MacRuby 0.7
Component: MacRuby | Keywords: 32bit number
-----------------------------+----------------------------------------------
Description changed by martinlagardette@…:
Old description:
> there seems to be a bug in the 32bit release of 0.6 with numbers
>
> arch -arch i386 macirb --simple-prompt
> >> 0x44485250
> # reality check
> => 1145590352
> >> NSNumber.numberWithInt(0x44485250) # then
> see all 32 NSNumber are weird...
> => 71848528
> >> NSNumber.numberWithFloat(0x44485250)
> => 1145590272.0
> >> NSNumber.numberWithInt(1145590352)
> => 71848528
> >> NSNumber.numberWithFloat(1145590352)
> => 1145590272.0
>
> versus:
>
> arch -arch x86_64 macirb --simple-prompt
> >> 0x44485250
> # reality check
> => 1145590352
> >> NSNumber.numberWithInt(0x44485250)
> => 1145590352
> >> NSNumber.numberWithFloat(0x44485250)
> => 1145590400.0
> >> NSNumber.numberWithInt(1145590352)
> => 1145590352
> >> NSNumber.numberWithFloat(1145590352.0) # this is
> weird again...
> => 1145590400.0
>
> to look a bit further, the bug turning point seems to be here for the
> 32bit release:
>
> >> NSNumber.numberWithInt(536870910)
> => 536870910
> >> NSNumber.numberWithInt(536870911)
> => 536870911
> >> NSNumber.numberWithInt(536870912)
> => -536870912
> >> NSNumber.numberWithInt(536870913)
> => -536870911
>
> and here in the 64 bit:
>
> >> NSNumber.numberWithInt(2147483646)
> => 2147483646
> >> NSNumber.numberWithInt(2147483647)
> => 2147483647
> >> NSNumber.numberWithInt(2147483648)
> => -2147483648
> >> NSNumber.numberWithInt(2147483649)
> => -2147483647
>
> also an other detail:
>
> 32bit turning point:
> >> 536870911 / 16
> => 33554431
>
> 64bit turning point:
> >> 2147483647 / 64
> => 33554431
New description:
there seems to be a bug in the 32bit release of 0.6 with numbers
{{{
arch -arch i386 macirb --simple-prompt
>> 0x44485250 # reality check
=> 1145590352
>> NSNumber.numberWithInt(0x44485250) # then see all 32 NSNumber are
weird...
=> 71848528
>> NSNumber.numberWithFloat(0x44485250)
=> 1145590272.0
>> NSNumber.numberWithInt(1145590352)
=> 71848528
>> NSNumber.numberWithFloat(1145590352)
=> 1145590272.0
}}}
versus:
{{{
arch -arch x86_64 macirb --simple-prompt
>> 0x44485250 # reality check
=> 1145590352
>> NSNumber.numberWithInt(0x44485250)
=> 1145590352
>> NSNumber.numberWithFloat(0x44485250)
=> 1145590400.0
>> NSNumber.numberWithInt(1145590352)
=> 1145590352
>> NSNumber.numberWithFloat(1145590352.0) # this is weird again...
=> 1145590400.0
}}}
to look a bit further, the bug turning point seems to be here for the
32bit release:
{{{
>> NSNumber.numberWithInt(536870910)
=> 536870910
>> NSNumber.numberWithInt(536870911)
=> 536870911
>> NSNumber.numberWithInt(536870912)
=> -536870912
>> NSNumber.numberWithInt(536870913)
=> -536870911
}}}
and here in the 64 bit:
{{{
>> NSNumber.numberWithInt(2147483646)
=> 2147483646
>> NSNumber.numberWithInt(2147483647)
=> 2147483647
>> NSNumber.numberWithInt(2147483648)
=> -2147483648
>> NSNumber.numberWithInt(2147483649)
=> -2147483647
}}}
also an other detail:
{{{
32bit turning point:
>> 536870911 / 16
=> 33554431
64bit turning point:
>> 2147483647 / 64
=> 33554431
}}}
--
--
Ticket URL: <http://www.macruby.org/trac/ticket/748#comment:1>
MacRuby <http://macruby.org/>
More information about the MacRuby-devel
mailing list