Defining a variable that is only 1 bit in size

For Flowcode users to discuss projects, flowcharts, and any other issues related to Flowcode 2 and 3.

Moderators: Benj, Mods

Post Reply
Ron
Posts: 225
Joined: Wed Apr 11, 2007 6:15 pm
Has thanked: 2 times

Defining a variable that is only 1 bit in size

Post by Ron »

Hi,

When I create a variable I must use an entire byte. I want to be able to define a variable as a bit so I do not waste so much memory.

How do you do it?

Thanks

Ron

Sean
Valued Contributor
Valued Contributor
Posts: 548
Joined: Tue Jun 26, 2007 11:23 am
Has thanked: 6 times
Been thanked: 44 times

Post by Sean »

Hi Ron,

The best way to store single bits of data (or small combinations of bits) is to use the AND, OR and XOR functions in a calculation block. These commands can be used to manipulate individual bits within a byte or integer variable.

If you create a variable called Flags:

A bit can be set by ORing it with a 1

Flags = Flags OR 4 will force bit 2 to be set

A more convenient notation, using the bit shift function, might be:

Flags = Flags OR (1 << 2)

Clearing the same bit can be done by ANDing it with a 0;

Flags = Flags AND NOT(1 << 2)

The bit can be toggled by XORing it with a 1;

Flags = Flags XOR (1 << 2)

The bit can be tested by ANDing it with a 1;

IF Flags AND (1 << 2)

It is not worth doing this if you are only dealing with a single variable of this type, as it will still be stored as a byte (the minimum memory size the controller will handle). But if you have several single bit variables they can be packed into a single byte or integer, using a different bit for each flag, by using these techniques.

The savings in data memory will be offset by a slightly larger program and slight reduction in operating speed due to the additional operations

Post Reply