我遇到了一个棘手的位操作问题.
据我所知,保存值的最小可变大小是8位的一个字节.C/C++中可用的位操作适用于整个字节单元.
想象一下,我有一张地图用信号10000(5位)替换二进制模式100100(6位).如果来自文件的输入数据的第一个字节是10010001(8位)存储在char变量中,则其中一部分与6位模式匹配,因此将被5位信号替换为1000001(7位)的结果.
我可以使用一个掩码来操作一个字节内的位来获得最左边的位到10000(5位)的结果,但是最右边的3位变得非常难以操作.我无法移动原始数据的最右边3位以获得正确的结果1000001(7位),然后在该char变量中填充1个填充位,该变量应由下一个输入字节的第1位填充.
我想知道C/C++是否可以实际上替换长度不适合Char(1字节)变量或甚至Int(4字节)的位模式.C/C++可以做到这一点,还是我们必须使用其他处理单位操作的汇编语言?
我听说Power Basic可以比C/C++更好地进行逐位操作.