# Responding to Buttons using Bitwise Addition in PICO-8 It is possible to respond to each button press in PICO-8 by using conditional statements like this:

```if btn(0) then vx=-1 end
if btn(1) then vx=1 end
if btn(2) then vy=-1 end
if btn(3) then vy=1 end```

But a more elegant solution is to use the bitwise addition function band().  Calling btn() with no arguments results in a bitfield of outputs.  In other words, pressing button 1 (right) gives 000010.

Continuing with the example of pressing the right button, the result is 000010 and so looking at the code in get_x_axis():

`band(btn(),2)/2-band(btn(),1)`

band(000010,2)/2 returns 1
band(000010,1) returns 0

so 1-0 returns 1, i.e. move to the right (positive).

By checking the bits and subtracting the right from left (or down from up) we end up with a value of -1 or 1 for the movement.

I’ve wrapped the bitwise calculations here into two functions for neatness (get_x_axis and get_y_axis), but this is slightly profligate with tokens and by directly referencing the band() function you can reduce your token count by two from the standard conditional method shown above.

```vx=0
vy=0

function get_x_axis()
return band(btn(),2)/2-band(btn(),1)
end

function get_y_axis()
return band(btn(),8)/8-band(btn(),4)/4
end

function _update()
vx=get_x_axis()
vy=get_y_axis()
end

function _draw()
cls()
print(vx,5,5)
print(vy,5,11)
end```

Feel free to use, and if you spot any further optimizations, let me know!