Difference between revisions of "Bitwise Operators"

From GiderosMobile
(removed language stuff)
m
Line 7: Line 7:
 
Bitwise operators to manipulate numbers.
 
Bitwise operators to manipulate numbers.
  
a''' | '''b Bitwise 'a OR b'.<br/>
+
a''' | '''b &emsp; &emsp; Bitwise 'a OR b'.<br/>
a''' & '''b Bitwise 'a AND b'.<br/>
+
a''' & '''b &emsp; &emsp; Bitwise 'a AND b'.<br/>
a''' ~ '''b Bitwise 'a XOR b'.<br/>
+
a''' ~ '''b &emsp; &emsp; Bitwise 'a XOR b'.<br/>
a''' &lt;&lt; '''b Bitwise shift 'a' by 'b' left.<br/>
+
a''' &lt;&lt; '''b &emsp; Bitwise shift 'a' by 'b' left.<br/>
a''' &gt;&gt; '''b Bitwise shift 'a' by 'b' right.<br/>
+
a''' &gt;&gt; '''b &emsp; Bitwise shift 'a' by 'b' right.<br/>
''' ~ '''a Bitwise 'NOT a'.<br/>
+
''' ~ '''a &emsp; &emsp; Bitwise 'NOT a'.<br/>
  
 
=== Examples ===
 
=== Examples ===

Revision as of 13:40, 31 May 2021

Supported platforms: Platform android.pngPlatform ios.pngPlatform mac.pngPlatform pc.png
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

Events

Constants