Difference between revisions of "Bitwise Operators"
From GiderosMobile
m (Text replacement - "<source" to "<syntaxhighlight")  | 
				|||
| (One intermediate revision by one other user not shown) | |||
| Line 1: | Line 1: | ||
__NOTOC__  | __NOTOC__  | ||
| − | '''Supported platforms:''' [[File:Platform android.png]][[File:Platform ios.png]][[File:Platform mac.png]][[File:Platform pc.png]]<br/>  | + | '''Supported platforms:''' [[File:Platform android.png]][[File:Platform ios.png]][[File:Platform mac.png]][[File:Platform pc.png]][[File:Platform linux.png]]<br/>  | 
'''Available since:''' Gideros 2017.10<br/>  | '''Available since:''' Gideros 2017.10<br/>  | ||
| Line 21: | Line 21: | ||
elseif k==KeyCode.RIGHT then joypad=joypad|0b000001  | elseif k==KeyCode.RIGHT then joypad=joypad|0b000001  | ||
end  | end  | ||
| − | </  | + | </syntaxhighlight>  | 
'''Clear joypad switches'''  | '''Clear joypad switches'''  | ||
| Line 30: | Line 30: | ||
elseif k==KeyCode.RIGHT then joypad=joypadRGUDLR&0b1110  | elseif k==KeyCode.RIGHT then joypad=joypadRGUDLR&0b1110  | ||
end  | end  | ||
| − | </  | + | </syntaxhighlight>  | 
'''Move in a direction based on joystick switches (using above examples)'''  | '''Move in a direction based on joystick switches (using above examples)'''  | ||
| Line 38: | Line 38: | ||
x=x+deltaX[joypad+1]  | x=x+deltaX[joypad+1]  | ||
y=y+deltaY[joypad+1]  | y=y+deltaY[joypad+1]  | ||
| − | </  | + | </syntaxhighlight>  | 
'''Debounce bits, eg joypad switches'''  | '''Debounce bits, eg joypad switches'''  | ||
| Line 44: | Line 44: | ||
debouncedJoypad=(joypad~joypadOld)&joypad  | debouncedJoypad=(joypad~joypadOld)&joypad  | ||
joypadOld=joypad  | joypadOld=joypad  | ||
| − | </  | + | </syntaxhighlight>  | 
=== See also ===  | === See also ===  | ||
Latest revision as of 23:46, 13 January 2025
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
debouncedJoypad=(joypad~joypadOld)&joypad
joypadOld=joypad
See also
https://www.lua.org/pil/3.3.html