首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有一种方法来定义和发送一个位

是否有一种方法来定义和发送一个位
EN

Stack Overflow用户
提问于 2019-08-01 16:39:18
回答 1查看 220关注 0票数 0

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

因此,需要发送单比特与arduino无线电发射模块进行比较。

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

代码语言:javascript
运行
复制
std::bitset<1> p(1);

但它仍然有4字节大小。

有什么办法来声明一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-01 18:04:12

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

代码语言:javascript
运行
复制
char single_byte = 32; // same as 0010 0000
char some_bytes[3] = {8, 254, 1}; // same as 0000 1000 1111 1110 0000 0001

要检查是否将位设置在特定位置,可以使用按位运算符(如& )。

代码语言:javascript
运行
复制
// 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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57313478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档