Difference between revisions of "Category talk:LSL Integer"

From Second Life Wiki
Jump to navigation Jump to search
(Created page with 'Are these numbers correct? "values between −2,147,483,648 and +2,147,483,647" . And if they are why the difference between the figures? -- ~~~~')
 
m (Answer why -2147483648 == ( 2147483647+1 ) in 32-bit two's complement arithmetic)
Line 1: Line 1:
Are these numbers correct? "values between −2,147,483,648 and +2,147,483,647" . And if they are why the difference between the figures? -- '''[[User:EddyFragment Robonaught|Eddy]]'''  <sup><small>([[User talk:EddyFragment_Robonaught|talk]]|[[Special:Contributions/EddyFragment_Robonaught|contribs]])</small></sup> 17:30, 27 June 2009 (UTC)
Are these numbers correct? "values between −2,147,483,648 and +2,147,483,647" . And if they are why the difference between the figures? -- '''[[User:EddyFragment Robonaught|Eddy]]'''  <sup><small>([[User talk:EddyFragment_Robonaught|talk]]|[[Special:Contributions/EddyFragment_Robonaught|contribs]])</small></sup> 17:30, 27 June 2009 (UTC)
:Aye correct as saved.
:This truth makes more visual sense in hex. A 32-bit two's complement integer 0x0, or +0x1 thru +0x7FFFffff, or -1 thru -0x7FFFffff, or -0x80000000.  In decimal, that is 0, or 1 thru 2147483647, or -1 thru -2147483647, or -2147483648.  The assymetry comes from the zero: both positive integers and zero have the uppermost most bit of the 32 bits zeroed, so the list of positive values loses one element to make room for zero.
:A correspondingly counterintuitive result here is that negating -2147483648 has no effect (-2147483648 == ( 0 - -2147483648 ) == ( 2147483647 + 1 ) ). Ugly as all this is, it's less ugly than the known alternatives, such as the one's complement encoding that can have two zeroes: a positive zero and a negative zero.  All that I'm saying here is the convention I remember learning years ago, I imagine LSL behaves this way at these limits, but I haven't tried to see yet ...  -- [[User:Ppaatt Lynagh|Ppaatt Lynagh]] 18:10, 27 June 2009 (UTC)

Revision as of 10:10, 27 June 2009

Are these numbers correct? "values between −2,147,483,648 and +2,147,483,647" . And if they are why the difference between the figures? -- Eddy (talk|contribs) 17:30, 27 June 2009 (UTC)

Aye correct as saved.
This truth makes more visual sense in hex. A 32-bit two's complement integer 0x0, or +0x1 thru +0x7FFFffff, or -1 thru -0x7FFFffff, or -0x80000000. In decimal, that is 0, or 1 thru 2147483647, or -1 thru -2147483647, or -2147483648. The assymetry comes from the zero: both positive integers and zero have the uppermost most bit of the 32 bits zeroed, so the list of positive values loses one element to make room for zero.
A correspondingly counterintuitive result here is that negating -2147483648 has no effect (-2147483648 == ( 0 - -2147483648 ) == ( 2147483647 + 1 ) ). Ugly as all this is, it's less ugly than the known alternatives, such as the one's complement encoding that can have two zeroes: a positive zero and a negative zero. All that I'm saying here is the convention I remember learning years ago, I imagine LSL behaves this way at these limits, but I haven't tried to see yet ... -- Ppaatt Lynagh 18:10, 27 June 2009 (UTC)