Category talk:LSL Integer

From Second Life Wiki
Revision as of 19:28, 7 January 2010 by Omei Turnbull (talk | contribs)
Jump to navigation Jump to search

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 is 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)
Thanx Ppaatt. I thought it might be a zero issue but didn't get as far as thinking that (of course) there would have to be (as you say) two zeros for the reach (both pos and neg) to be equal. "Positive Zero". Sounds like a good title for a science fiction novel. Cheers Ppaatt. -- Eddy (talk|contribs) 18:16, 27 June 2009 (UTC)
In addition to (--2147483648 == -2147483648) so does (-1 * -2147483648). Everyone knows that 1/0 causes a fatal error in integer math but what few people know is that (-2147483648 / -1) does as well on x86 processors (modulo is equally affected). I have yet to find any mention of this on the internet (except where I have posted it), I found it by accident while exploring edge cases (it crashed the sim). In LSL we papered over the exception, any time you divide by -1 we just apply the "-" operator, and for modulo -1 we just return 0. -- Strife (talk|contribs) 09:27, 29 June 2009 (UTC)
*insert foot in mouth* http://www.codeguru.com/cpp/sample_chapter/article.php/c11111__3/ -- Strife (talk|contribs) 10:00, 29 June 2009 (UTC)

lolz (although not at the fact that you can do "Integer math". Now I have to relearn stuff *slumps*). -- Eddy (talk|contribs) 10:03, 29 June 2009 (UTC)

Sub-classification Constants/Functions

I thought I'd take a quick peek at possible Integer-related Functions. A sea of Constants greeted me. Is a Sub classification perhaps useful? --Vernes 00:43, 8 January 2010 (UTC)

LSL in Focus: Integers classifies how integers are used in LSL, and might be what you are looking for. The uses are: signed integers, truth values, enumerations and bit vectors. I think every LSL integer constant clearly falls in exactly one of these four categories.--Omei Turnbull 03:28, 8 January 2010 (UTC)