1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-07-05 21:40:25 +00:00
QB64-PE/internal/help/_UNSIGNED.txt

74 lines
2.8 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{{KW|_UNSIGNED}} defines a numerical value as being positive using '''QB64''' only.
''TYPE'' {{PageSyntax}}
::: [[DIM]] variable [[AS]] [{{KW|UNSIGNED}}] ''datatype''
::: variable [[AS]] [{{KW|_UNSIGNED}}] ''datatype''
''_DEFINE'' {{PageSyntax}}
::: {{KW|_DEFINE}} {{Parameter|LetterRange}} {{KW|AS}} [{{KW|_UNSIGNED}}] {{Parameter|datatype}}
{{PageDescription}}
* When {{KW|_UNSIGNED}} values 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]], [[LONG]], [[_BIT]], [[_BYTE]], [[_INTEGER64]], [[_OFFSET]]
*'''[[SINGLE]], [[DOUBLE]] and [[_FLOAT]] variable types cannot be _UNSIGNED!'''
* {{KW|_UNSIGNED}} can be used in a {{KW|_DEFINE}} statement to set undefined variable name first letters as all positive only values.
* Can also be used in {{KW|DIM}} statements or Subprocedure parameter definitions following {{KW|AS}}.
* {{KW|_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~&
<center>How negative values affect the {{KW|_UNSIGNED}} value returned by a {{KW|_BYTE}} (8 bits). </center>
{{WhiteStart}}
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
{{WhiteEnd}}
''Example:'' Demonstrating how _UNSIGNED variables expand the Integer range.
{{CodeStart}}
{{Cl|DIM}} n {{Cl|AS}} {{Cl|_UNSIGNED}} {{Cl|INTEGER}}
{{Cl|DIM}} pn {{Cl|AS}} {{Cl|_UNSIGNED}} {{Cl|INTEGER}}
{{Cl|LOCATE}} 3, 6: {{Cl|PRINT}} "Press Esc to exit loop"
{{Cl|FOR...NEXT|FOR}} n = 1 {{Cl|TO}} 80000
{{Cl|_LIMIT}} 10000 ' 6.5 second loop
{{Cl|LOCATE}} 12, 37: {{Cl|PRINT}} n ' display current value
{{Cl|IF...THEN|IF}} n > 0 {{Cl|THEN}} pn = n ' find highest value
{{Cl|IF...THEN|IF}} n = 0 {{Cl|THEN}} Count = Count + 1: {{Cl|LOCATE}} 14, 37: {{Cl|PRINT}} "Count:"; Count; "Max:"; pn
{{Cl|IF...THEN|IF}} {{Cl|INP}}(&H60) = 1 {{Cl|THEN}} {{Cl|EXIT|EXIT FOR}} ' escape key exit
{{Cl|NEXT}} n
{{Cl|END}}
{{CodeEnd}}
{{OutputStart}}
Press Esc to exit loop
65462
Count: 13 Max: 65535
{{OutputEnd}}
''Explanation:'' The maximum value can only be 65535(32767 + 32768) so the FOR loop repeats itself. Remove the {{KW|_UNSIGNED}} parts and run it again.
{{PageSeeAlso}}
* [[DECLARE]], [[SUB]], [[FUNCTION]]
* [[DIM]], [[_DEFINE]]
* [[DEFSTR]], [[DEFLNG]], [[DEFINT]], [[DEFSNG]], [[DEFDBL]]
* [[ABS]], [[SGN]]
* [[Variable Types]]
{{PageNavigation}}