在 C/C++ 中,是否有一种简单的方法将按位运算符(特别是左/右移位)应用于动态分配的内存?
例如,假设我这样做了:
unsigned char * bytes=new unsigned char[3];
bytes[0]=1;
bytes[1]=1;
bytes[2]=1;
我想要一种方法来做到这一点:
bytes>>=2;
(那么“字节”将具有以下值):
bytes[0]==0
bytes[1]==64
bytes[2]==64
为什么价值观应该是这样的:
分配后,字节如下所示:
[00000001][00000001][00000001]
但我希望将字节视为一长串位,如下所示:
[000000010000000100000001]
右移两位将导致这些位看起来像这样:
[000000000100000001000000]
当分成 3 个字节(因此是 0、64、64)时,它最终看起来像这样:
[00000000][01000000][01000000]
有任何想法吗?我应该创建一个结构/类并重载适当的运算符吗?编辑:如果是这样,有关如何进行的任何提示?注意:我正在寻找一种方法来自己实施(有一些指导)作为学习经验。