Difference between revisions of "Bitwise Operators"
From GiderosMobile
(removed language stuff) |
|||
Line 1: | Line 1: | ||
__NOTOC__ | __NOTOC__ | ||
− | |||
<!-- GIDEROSOBJ:Bitwise Operators --> | <!-- GIDEROSOBJ:Bitwise Operators --> | ||
− | ''' | + | '''Supported platforms:''' [[File:Platform android.png]][[File:Platform ios.png]][[File:Platform mac.png]][[File:Platform pc.png]]<br/> |
− | ''' | + | '''Available since:''' Gideros 2017.10<br/> |
− | |||
− | |||
− | |||
− | a | + | === Description === |
− | a | + | Bitwise operators to manipulate numbers. |
− | a | + | |
− | a | + | a''' | '''b Bitwise 'a OR b'.<br/> |
− | a | + | a''' & '''b Bitwise 'a AND b'.<br/> |
− | + | a''' ~ '''b Bitwise 'a XOR b'.<br/> | |
− | === | + | a''' << '''b Bitwise shift 'a' by 'b' left.<br/> |
− | '''Set joypad switches''' | + | a''' >> '''b Bitwise shift 'a' by 'b' right.<br/> |
− | <source lang="lua"> | + | ''' ~ '''a Bitwise 'NOT a'.<br/> |
+ | |||
+ | === Examples === | ||
+ | '''Set joypad switches''' | ||
+ | <source lang="lua"> | ||
if k==KeyCode.UP then joypad=joypad|0b001000 | if k==KeyCode.UP then joypad=joypad|0b001000 | ||
elseif k==KeyCode.DOWN then joypad=joypad|0b000100 | elseif k==KeyCode.DOWN then joypad=joypad|0b000100 | ||
elseif k==KeyCode.LEFT then joypad=joypad|0b000010 | elseif k==KeyCode.LEFT then joypad=joypad|0b000010 | ||
elseif k==KeyCode.RIGHT then joypad=joypad|0b000001 | elseif k==KeyCode.RIGHT then joypad=joypad|0b000001 | ||
− | end</source> | + | end |
− | '''Clear joypad switches''' | + | </source> |
− | <source lang="lua"> | + | |
+ | '''Clear joypad switches''' | ||
+ | <source lang="lua"> | ||
if k==KeyCode.UP then joypad=joypad&0b0111 | if k==KeyCode.UP then joypad=joypad&0b0111 | ||
elseif k==KeyCode.DOWN then joypad=joypadRGUDLR&0b1011 | elseif k==KeyCode.DOWN then joypad=joypadRGUDLR&0b1011 | ||
elseif k==KeyCode.LEFT then joypad=joypadRGUDLR&0b1101 | elseif k==KeyCode.LEFT then joypad=joypadRGUDLR&0b1101 | ||
elseif k==KeyCode.RIGHT then joypad=joypadRGUDLR&0b1110 | elseif k==KeyCode.RIGHT then joypad=joypadRGUDLR&0b1110 | ||
− | end</source> | + | end |
− | '''Move in a direction based on joystick switches (using above examples)''' | + | </source> |
− | <source lang="lua"> | + | |
+ | '''Move in a direction based on joystick switches (using above examples)''' | ||
+ | <source lang="lua"> | ||
local deltaX={0,-1,1,0,0,-1,1,0,0,-1,1,0,0,-1,1,0} | local deltaX={0,-1,1,0,0,-1,1,0,0,-1,1,0,0,-1,1,0} | ||
local deltaY={0,0,0,0,1,1,1,1,-1,-1,-1,-1,0,0,0,0} | local deltaY={0,0,0,0,1,1,1,1,-1,-1,-1,-1,0,0,0,0} | ||
x=x+deltaX[joypad+1] | x=x+deltaX[joypad+1] | ||
− | y=y+deltaY[joypad+1]</source> | + | y=y+deltaY[joypad+1] |
− | '''Debounce bits, eg joypad switches''' | + | </source> |
− | <source lang="lua"> | + | |
+ | '''Debounce bits, eg joypad switches''' | ||
+ | <source lang="lua"> | ||
joypad=(joypad~joypadOld)&joypad | joypad=(joypad~joypadOld)&joypad | ||
− | joypadOld=joypad</source> | + | joypadOld=joypad |
+ | </source> | ||
+ | |||
+ | |||
+ | '''See also: https://www.lua.org/pil/3.3.html''' | ||
+ | |||
{|- | {|- | ||
| style="width: 50%; vertical-align:top;"| | | style="width: 50%; vertical-align:top;"| | ||
− | === | + | === Methods === |
| style="width: 50%; vertical-align:top;"| | | style="width: 50%; vertical-align:top;"| | ||
− | === | + | === Events === |
− | === | + | === Constants === |
|} | |} | ||
{{GIDEROS IMPORTANT LINKS}} | {{GIDEROS IMPORTANT LINKS}} |
Revision as of 13:34, 31 May 2021
Supported platforms:
Available since: Gideros 2017.10
Description
Bitwise operators to manipulate numbers.
a | b Bitwise 'a OR b'.
a & b Bitwise 'a AND b'.
a ~ b Bitwise 'a XOR b'.
a << b Bitwise shift 'a' by 'b' left.
a >> b Bitwise shift 'a' by 'b' right.
~ a Bitwise 'NOT a'.
Examples
Set joypad switches
if k==KeyCode.UP then joypad=joypad|0b001000
elseif k==KeyCode.DOWN then joypad=joypad|0b000100
elseif k==KeyCode.LEFT then joypad=joypad|0b000010
elseif k==KeyCode.RIGHT then joypad=joypad|0b000001
end
Clear joypad switches
if k==KeyCode.UP then joypad=joypad&0b0111
elseif k==KeyCode.DOWN then joypad=joypadRGUDLR&0b1011
elseif k==KeyCode.LEFT then joypad=joypadRGUDLR&0b1101
elseif k==KeyCode.RIGHT then joypad=joypadRGUDLR&0b1110
end
Move in a direction based on joystick switches (using above examples)
local deltaX={0,-1,1,0,0,-1,1,0,0,-1,1,0,0,-1,1,0}
local deltaY={0,0,0,0,1,1,1,1,-1,-1,-1,-1,0,0,0,0}
x=x+deltaX[joypad+1]
y=y+deltaY[joypad+1]
Debounce bits, eg joypad switches
joypad=(joypad~joypadOld)&joypad
joypadOld=joypad
See also: https://www.lua.org/pil/3.3.html
Methods |
EventsConstants |