c - 如何在一个字节中设置 N 个连续位,从 LSB 开始?
问题描述
我想在一个字节中设置 N 个位(字节始终以 0 开头)并使用指针存储它。想象:
void SetBits(uint8_t bytesToSet, uint8_t* var) {}
我将如何实现这个(使用C)?
解决方案
应该在哪里设置 N 位?向左,向右?
如果你想让那些 N 位在右边,你的函数应该是这样的:
void SetBits(uint8_t bitsToSet, uint8_t* var)
{
if (bitsToSet < 8)
*var = (1 << bitsToSet) - 1;
else {*var = 0; *var = ~(*var);}
}
例如,对于 call SetBits(5,&a)
, variablea
将保存 value 0b00011111
。
推荐阅读
- excel - 编译错误:未定义子或函数(MRound)
- azure-data-factory-2 - 如何将现有的 V1 Json 数据工厂模板迁移到 V2 版本并使用 MS 迁移工具
- django - 密码重置完成后,如何发送电子邮件告知密码已更改?
- dns - 如何在没有登录的情况下在 MediaWiki 中启用图像和文档上传
- javascript - 将字符串更改为新日期
- git - 如何恢复“无法访问的 blob”,我通过“git glean -df”删除了桌面上的所有目录
- r - 如何遍历确定的行范围?
- linux - shell/bash 编码中的 `&` 和 `#` 是什么意思?请解码 Bash 脚本的行
- angular - Angular:RxJs .switchMap() 调用后端 - 最佳结构?
- excel - 多次保存文件