Set individual bit in C++

前端 未结 6 803
深忆病人
深忆病人 2021-01-13 13:33

I have a 5 byte data element and I need some help in figuring out how in C++ to set an individual bit of one of these byte; Please see my sample code below:



        
相关标签:
6条回答
  • 2021-01-13 14:14

    You can use bitwise-or (|) to set individual bits, and bitwise-and (&) to clear them.

    0 讨论(0)
  • 2021-01-13 14:15
    m_TxBuf[1] |= 4;
    

    To set a bit, you use bitwise or. The above uses compound assignment, which means the left side is one of the inputs and the output.

    0 讨论(0)
  • 2021-01-13 14:19

    Typically we set bits using bitwise operator OR (operator| or operator|= as a shorthand).

    Assuming 8-bits to a byte (where the MSB is considered the '7st' bit and the LSB considered the 0th: MSB 0) for simplicity:

    char some_char = 0;
    some_char |= 1 << 0; // set the 7th bit (least significant bit)
    some_char |= 1 << 1; // set the 6th bit
    some_char |= 1 << 2; // set the 5th bit
    // etc.
    

    We can write a simple function:

    void set_bit(char& ch, unsigned int pos)
    {
        ch |= 1 << pos;
    }
    

    We can likewise test bits using operator&.

    // If the 5th bit is set...
    if (some_char & 1 << 2)
        ...
    

    You should also consider std::bitset for this purpose which will make your life easier.

    0 讨论(0)
  • 2021-01-13 14:22
    int bitPos = 2;  // bit position to set
    m_TxBuf[1] |= (1 << bitPos);
    
    0 讨论(0)
  • 2021-01-13 14:30

    Bitwise operators in C++.

    "...set bit 2..."

    Bit endianness.

    I would like to set bit 2 to high of byte m_TxBuf[1];

    m_TxBuf[1] |= 1 << 2

    0 讨论(0)
  • 2021-01-13 14:32

    Just use std::bitset<40> and then index bits directly.

    0 讨论(0)
提交回复
热议问题