TechSpot

Help with finding bit states?

By Justin
May 14, 2002
Topic Status:
Not open for further replies.
  1. Ok, I'm learning C++ (teaching myself). I understand code, I know HTML very well and other things, however most of what I knew was higher then C++, so I never learned how to translate that. I eventually plan to move on to Assembler, but I'd rather get c++ down first. My problem is this.

    How do I determine the state of the bits from a hex offset? For instance, if I have 0x1ff, or 0x1fe, or 0xfff, how do I determine what the bits are at that moment?

    Thanks a lot!
  2. Nodsu

    Nodsu Newcomer, in training Posts: 9,431

    So you want to check individual bits in a number or individual bits in a bit array?

    For checking bits, you use the bitwise AND (&).

    If you want to chek for the first bit (LSB), you & the number with 0x1 (0000 0001 binary).
    If the result is zero (false), the bit was not set.

    if(chicken & 0x2) { // If bit 2 is set, do something

    For the second bit, you & the number with 0x2 (0000 0010 binary) .
    For the third bit, use constant 0x4 (0000 0100 binary).

    If you want to set bits, use the bitwise OR (|).

    Set first bit in varaible 'chicken':
    chicken |= 0x1;

    For clearing bits, AND with inversed constants.

    Clear bit #4 in 'chicken':
    chicken &= 0xF7; // 1111 0111 binary

    If you want to flip a bit, use XOR (^).
    Flip bit 2 in 'chicken':
    chicken ^= 0x2;

    Some compilers also support some less standard ways of accessing individual bits
    (Borland for example), that are somewhat simpler to use.

    If you hava a huge array of bits, and want to find the value of nth bit in that array:

    - Divide the bit offset by 8 , you'll get a byte offset to the previous byte.
    - Read the next byte.
    - Use the remainder from the division in a 'switch' to get access to individual bits.


    Of course, you could serach the net and find heaps of libraries containing functions
    to do bit manipulations and save yourself the trouble.
  3. Justin

    Justin Newcomer, in training Topic Starter Posts: 1,595

    Awesome... heh... exactly what I needed.

    That helps a lot. Thanks!
Topic Status:
Not open for further replies.


Add New Comment

TechSpot Members
Login or sign up for free,
it takes about 30 seconds.
You may also...


Get complete access to the TechSpot community. Join thousands of technology enthusiasts that contribute and share knowledge in our forum. Get a private inbox, upload your own photo gallery and more.