从内存中读取单个比特
Reading individual bits from Memory
要将基数为10的数字转换为基数为2的数字,我想到直接从内存中读取位而不是执行位移(>>
)。
考虑程序:
int n = 14;
bool* pointer = (bool*)&n;
for(int i = 0; i < 32; i++)
cout << *(p + i);
程序没有给出正确的输出。
下面的程序可以工作:
int n = 14;
bool *p = (bool*)&n;
for(int i = 0; i < 32; i++){
cout << *p;
n = n >> 1;
}
位移位浪费了不必要的时间。请指出第一个代码片段中的错误
如果你真的担心移位太昂贵(这只在一些较老的cpu上是真的,比如68008),你可以使用常数位掩码,像这样:
const unsigned int table [] = {0x00000001, 0x00000002, 0x00000004, 0x00000008,
0x00000010, 0x00000020, 0x00000040, 0x00000080,
// ...rinse and repeat until bit 31....
};
int isSet (unsigned int value, int bitNo) {
return ((value & table [bitNo]) != 0);
}
由于无数的原因,你上面所展示的是行不通的,有些原因在你收到的评论中。
相关文章:
- 如何读取单个字符并在输入两个字符序列时输出? 使用 while 循环和C++
- QDataStream 读取和写入的字节数比 QFile::length() 报告要多
- 在C++中使用线程查找友好号码比单个线程花费更多时间
- 为什么平均打印数组元素比打印单个对象慢C++?
- 如何使用单个fstream创建、读取和写入文件
- 有人可以解释为什么使用 OpenMP 部分的运行速度比单个线程慢吗?
- 尝试从单向链表C++中删除单个节点时出现读取访问冲突
- 尝试一次将单个字符读取到大小不确定的数组中
- 这个针对单个写入器 + 读取器的发布/检查更新类是否可以使用 memory_order_relaxed 或获取/发布以提
- 为什么向量"emplace_back"在多个线程中的行为比单个线程慢得多
- 为什么查找 + 插入的组合比单个插入语句工作得更快
- 多个快速读取器 单个慢速写入器:使用具有原子索引的阴影数据安全吗?
- 从存储库读取单个文件时出现问题
- 为什么SNPRINTF始终比OSTRINGTREAM快2倍,以打印单个数字
- 是否有一种方法可以从文本文件中读取并将单个数据存储为不同的变量
- Linux 在从文件中读取数据并放入矢量时比 Windows 快得多.txt.我将如何加速Windows以做同样的事情
- 如何使用单个解锁方法(可称为读取器或写入器)实现C++读写器锁?
- 来自单个数字输入的Arduino读取脉冲宽度频率和占空比
- 如何在 c++ 中将文件中的段落作为单个字符串读取
- 从内存中读取"char"比读取"word"快吗?