c - 试图测试一个字节的第 1 位是否被翻转?位移位
问题描述
我有一个字节,我想测试 Bit 1 是否打开。
我写的条件是:if(byte & (1 << 0)) return true;
困惑:我不明白如何读取一个字节。
这是Bit 1吗?IE。(1 << 0)
00000000
^
或这个?(1 << 1)
00000000
^
换句话说,我们是从 0 -7 还是 1 - 8 读取一个字节?
解决方案
在计算机科学中,计数总是从 0 开始。所以第 0 位是最右边的一位。这就是为什么,在那个答案的例子中,110 (6) << 1
变成了1100 (12)
。这也意味着移位 0 是一个空操作(它不做任何事情)。
这也意味着对于您的情况,如果您想测试最右边的位,您需要做的就是byte & 1
- 无需移位。
推荐阅读
- python - 安装 python-telegram-bot 时出现错误“找不到包 'libffi'”
- apache - 需要从 .htaccess mod-rewrite 重定向规则中删除特定文件夹
- amcharts - 将 baseInterval 设置为月份的 Amchart 错误
- heroku - 从 Heroku Scheduler 调用 rake 任务
- javascript - 如何根据位置将 Google Map API 标记链接到 Flickr API 照片搜索
- javascript - 做破坏的权利吗?
- excel - 需要帮助在计算字段中创建嵌套包含语句
- r - dplyr::bind_rows(...) 与 do.call(rbind, ...) 的符号列表
- python-3.x - 如何在 Python 中的数据框中按特定字符串长度拆分行?
- python - starmap_async 绕过打印功能