Difference between revisions of "UNSIGNED"

From QB64 Wiki
Jump to navigation Jump to search
imported>Clippy
m (added code example)
imported>Clippy
m
Line 13: Line 13:




''Example 1:'' [[DIM]] intvariable [[AS]] _UNSIGNED [[INTEGER]]
''Example 1:'' How negative values affect the _UNSIGNED value returned by a [[_BYTE]](8 bits).
 
 
''Example 2:'' How negative values affect the _UNSIGNED value returned by a [[_BYTE]](8 bits).


::::00000001 - unsigned & signed are both 1
::::00000001 - unsigned & signed are both 1
Line 24: Line 21:
::::11111101 - unsigned is 253 but signed is -3
::::11111101 - unsigned is 253 but signed is -3


''Example 3:'' Demonstrating how _UNSIGNED variables expand the Integer range.
''Example 2:'' Demonstrating how _UNSIGNED variables expand the Integer range.


:DIM n AS _UNSIGNED INTEGER
:DIM n AS _UNSIGNED INTEGER
Line 39: Line 36:




''Explanation:'' The maximum value can only be 65535(32767 + 32768) so the loop repeats itself. Remove the _UNSIGNED parts and run it again.
''Explanation:'' The maximum value can only be 65535(32767 + 32768) so the FOR loop repeats itself. Remove the _UNSIGNED parts and run it again.





Revision as of 01:57, 17 February 2010

_UNSIGNED defines a numerical value as being positive only in QB64 only.


Syntax: _DEFINE LetterRange AS [_UNSIGNED] datatype


  • Although _UNSIGNED values can use negative values the result subtracts from the highest value of the number's type keeping it positive.
  • Datatype can be any of the following: INTEGER, SINGLE, DOUBLE, LONG, STRING, _BIT, _BYTE, _INTEGER64, _FLOAT
  • _UNSIGNED can be used in a _DEFINE statement to set undefined variable name first letters as all positive only values.
  • Can also be used in DIM statements or Subprocedure parameter definitions following AS.
  • _UNSIGNED allows larger positive numerical variable value limits than signed ones.
  • The Unsigned variable type suffix used is the tilde ~ before the number's own type suffix: variablename~&


Example 1: How negative values affect the _UNSIGNED value returned by a _BYTE(8 bits).

00000001 - unsigned & signed are both 1
01111111 - unsigned & signed are both 127
11111111 - unsigned is 255 but signed is -1
11111110 - unsigned is 254 but signed is -2
11111101 - unsigned is 253 but signed is -3

Example 2: Demonstrating how _UNSIGNED variables expand the Integer range.

DIM n AS _UNSIGNED INTEGER
DIM pn AS _UNSIGNED INTEGER
LOCATE 3, 6: PRINT "Press Esc to exit loop"
FOR n = 1 TO 80000
_LIMIT 10000 ' 6.5 second loops
LOCATE 12, 37: PRINT n ' display current value
IF n > 0 THEN pn = n 'find highest value
IF n = 0 THEN Count = Count + 1: LOCATE 14, 37: PRINT "Count:"; Count; "Max:"; pn
IF INP(&H60) = 1 THEN EXIT FOR ' escape key exit
NEXT n
END


Explanation: The maximum value can only be 65535(32767 + 32768) so the FOR loop repeats itself. Remove the _UNSIGNED parts and run it again.


See also: DECLARE, SUB, FUNCTION, DIM, _DEFINE, DEFSTR, DEFLNG, DEFINT, DEFSNG, DEFDBL, ABS, SGN


Navigation:

Go to Keyword Reference - Alphabetical

Go to Keyword Reference - By usage