我有一个5字节的数据元素,我需要一些帮助来弄清楚如何在C ++中设置这些字节之一的单个位;请参阅下面的示例代码:
char m_TxBuf[4];
我想将第2位设置为字节m_TxBuf[1]
的高位。
00000 0 00 ^ This one
非常感谢任何支持; 谢谢!
答案 0 :(得分:14)
“......设置第2位......”
I would like to set bit 2 to high of byte m_TxBuf[1];
m_TxBuf[1] |= 1 << 2
答案 1 :(得分:4)
您可以使用按位或(|
)来设置各个位,使用按位和(&
)来清除它们。
答案 2 :(得分:3)
m_TxBuf[1] |= 4;
要设置位,可以使用按位或。以上使用复合赋值,这意味着左侧是输入和输出之一。
答案 3 :(得分:3)
int bitPos = 2; // bit position to set
m_TxBuf[1] |= (1 << bitPos);
答案 4 :(得分:1)
通常我们使用按位运算符OR(运算符|或运算符| =作为简写)来设置位。
为简单起见,假设8位到一个字节(其中MSB被认为是'第7位',LSB被认为是第0位:MSB 0):
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.
我们可以编写一个简单的函数:
void set_bit(char& ch, unsigned int pos)
{
ch |= 1 << pos;
}
我们同样可以使用operator&amp;。
测试位// If the 5th bit is set...
if (some_char & 1 << 2)
...
你也应该考虑使用std :: bitset来使你的生活更轻松。
答案 5 :(得分:0)
只需使用std :: bitset&lt; 40&gt;然后直接索引位。