在C/C++中,是否有一种简便的方法可以对动态分配的内存应用按位运算符(特别是左/右移)?
例如,假设我做了这个:
unsigned char * bytes=new unsigned char[3];
bytes[0]=1;
bytes[1]=1;
bytes[2]=1;
我希望有一种方法来实现这个目标:
我想要的是:
bytes>>=2;
(然后“bytes”将具有以下值):
bytes[0]==0
bytes[1]==64
bytes[2]==64
为什么值应该是这样的:
分配后,字节看起来像这样:
[00000001][00000001][00000001]
但我希望将字节视为一长串位,就像这样:
[000000010000000100000001]
右移两位会使位数如下所示:
[000000000100000001000000]
当将其分解回3个字节时,最终看起来像这样(因此为0、64、64):
[00000000][01000000][01000000]
有什么想法吗?我是否应该创建一个结构体/类并重载适当的运算符?编辑:如果是这样,如何继续?注意:我正在寻找一种自己实现(在一些指导下)作为学习经验的方式。
任何想法?我是否应该创建一个结构体/类并重载适当的运算符?如果是这样,如何继续?请注意,我正在寻找一种自己实现(在一些指导下)作为学习经验的方式。
bytes[1]
和bytes[2]
的值相同?你能进一步解释一下吗? - dirkgently