Exorcise and bicycle orr...

Exorcise and bicycle orr… #

Now that you have started thinking about the individual bits that make up the data that you work with on a daily basis, there are a couple of operations that allow you to do this easily.

AND operation #

AND allows you to create a value that displays where both bits are set.

Val 1 Op Val 2 Result
0 AND 0 0
0 AND 1 0
1 AND 1 1
1 AND 0 0

The syntax is:

    and     Rd, Rn, op2 @ Rd = destination, Rn = first value  

BIC operation #

The BIC performs an AND on a value and the bitwise NOT of the second value.

Val 1 OP Val 2 Result
0b11110000 0b01010101
NOT 0b10101010
0b11110000 AND 0b10101010 0b10100000

The syntax is:

    bic     Rd, Rn, op2 @ Rd = destination, Rn = first value   

ORR operation #

This is a fairly easy operation that works as a logical OR. If either bit is set, then the resulting bit set will have the bit set.

Val 1 Op Val 2 Result
0 OR 0 0
0 OR 1 1
1 OR 1 1
1 OR 0 1
    orr     Rd, Rn, op2 @ Rd = destination, Rn = first value   

EOR operation #

I try not to write in first person much, but this is my favorite operation. The exclusive or or XOR has some cool properties. This will set a bit if only one bit of the pair is set.

Val 1 Op Val 2 Result
0 XOR 0 0
0 XOR 1 1
1 XOR 1 0
1 XOR 0 1

This is used in many different places in computing checksums, cryptography, random number generators, uniqueness detection…