C++ 有没有办法定义和发送单个位

C++ 有没有办法定义和发送单个位,c++,arduino,C++,Arduino,其思想是将各种无线电发射模块与发射信号的模拟线圈进行比较 因此,有必要发送单个比特以与arduino无线电发射模块进行比较 我已经尝试包含位集并定义如下内容: std::bitset<1> p(1); std::位集p(1); 但它仍然有4字节大小 有没有办法声明单个位?不,您不能声明单个位。只有8的倍数(也称为字节)。在C++中,类型变量的大小是1字节。如果要传输/比较一个位序列,可以使用字符或字符数组 要检查位是否设置在特定位置,可以使用诸如和之类的逐位运算符 // exam

其思想是将各种无线电发射模块与发射信号的模拟线圈进行比较

因此,有必要发送单个比特以与arduino无线电发射模块进行比较

我已经尝试包含位集并定义如下内容:

std::bitset<1> p(1);
std::位集p(1);
但它仍然有4字节大小


有没有办法声明单个位?

不,您不能声明单个位。只有8的倍数(也称为字节)。在C++中,类型变量的大小是1字节。如果要传输/比较一个位序列,可以使用字符或字符数组

要检查位是否设置在特定位置,可以使用诸如之类的逐位运算符

// example:
// check if the second bit of the second byte in some_bytes is set

char filter = 64; // 0100 0000
if (some_bytes[1] & filter) // 1111 1110 & 0100 000 = 0100 0000
// returns true

对象的大小永远不会小于一个字节。最接近的是一个
bool
,它可能存储在一个字节中,但如果需要存储多个字节,它的密度比其他类型的要低。你到底想比较什么还不太清楚。你的“因此”是如何与你的想法相一致的。没有足够的上下文。请解释您遇到的问题是什么,不要再关注如何解决它。那么,您是希望每字节存储1位(内存位置),还是希望每字节打包8位(节省内存但需要更复杂的代码)?这与通过某些硬件发送一个位值有什么关系?很不清楚的问题。。。
// example:
// check if the second bit of the second byte in some_bytes is set

char filter = 64; // 0100 0000
if (some_bytes[1] & filter) // 1111 1110 & 0100 000 = 0100 0000
// returns true