Checking Bit of a Byte using another variable

# Thread: Checking Bit of a Byte using another variable

1. ## Checking Bit of a Byte using another variable

If I have two byte variables Check and Days.
If Days only range from 1 to 7, can we check bits in Check based on Days?

For example, lets say if Days=5, I am having trouble with the following method:

Code:
`if Check[Days]=1 then goto whatever`
In the above example I want to check bit 5 of Check variable.

Is there any other method to do the above task?

2. Did you find this post helpful? |
Is there any other method to do the above task?
Yes:

if Check.0[Days]=1 then goto whatever

Cheers

Al.

3. Did you find this post helpful? |
Originally Posted by aratti

if Check.0[Days]=1 then goto whatever

Al.
Thanks Al, can you please explain what does "0" in Check.0 does?

4. Did you find this post helpful? |
Check.0[Days] tells PBP to treat Check as a bit array with Days as the bit index pointer.

Since Check is a byte PBP will treat it as an 8-bit array. The lowest bit will be 0, and the
highest bit will be 7.

If Days = 5; then IF Check.0[Days]=1 will be testing bit position 6 in Check if you're
counting bit positions in Check from left-to-right as 87654321.

Then you would use; IF Check.0[Days-1]=1 THEN.

If you're counting bit positions in Check from left-to-right as 76543210 then it would work
with; IF Check.0[Days]=1 THEN.
Last edited by Bruce; - 10th December 2010 at 23:13. Reason: Better explanaition

5. Did you find this post helpful? |

## little confused

Originally Posted by Bruce
Check.0[Days] tells PBP to treat Check as a bit array with Days as the bit index pointer.

Since Check is a byte PBP will treat it as an 8-bit array. The lowest bit will be 0, and the
highest bit will be 7.

If Days = 5; then IF Check.0[Days]=1 will be testing bit position 6 in Check if you're
counting bit positions in Check from left-to-right as 87654321.

Then you would use; IF Check.0[Days-1]=1 THEN.

If you're counting bit positions in Check from left-to-right as 76543210 then it would work
with; IF Check.0[Days]=1 THEN.
Thanks for the explanation, few clarifications:
1) Do bits get counted from right to left OR left to right?
I mean to say isn't that Check.0[Days]=1 should check bit 4? (Assuming Days=5)
2) What can I do if Check is a word and I want to check:
a) Bit 15 & Bit 3 (Just want to know)
b) Lower byte value & higher byte value

6. Did you find this post helpful? |

7. Did you find this post helpful? |
Thanks Bruce, the topics have really been helpful.
After reading them, I still have one question (Just want to confirm)

Please correct me if I am wrong :

Check=[bit7,bit6,bit5,bit4,bit3,bit2,bit1,bit0]

To access bit7 of Check variable (byte) : Should it be
Check.0[days] ; Days =7 in this example

Similarly :

To access bit1 of Check variable (byte) : Should it be
Check.0[days] ; Days =1 in this example

8. Did you find this post helpful? |
Yep that will work.

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts