在C/C++中,是否有一种简单的方法将位运算符(特别是左/右移)应用于动态分配内存?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]
任何想法?我应该做一个结构/类并重载适当的操作符?编辑:如果是这样,任何提示如何进行?注意:我正在寻找一种方法来自己实施(有一些指导)作为学习体验。
你会期望这个每个单独移动?或者将一个字节的位传送到下一个字节? – 2010-03-06 23:03:50
你的意思是你想要转移跨越你访问的字节的边界吗?我假设你也希望能够做到这一点,比如说4个字节,这对于整型和轮班来说可能是安全的。 – 2010-03-06 23:04:08
我编辑了我的帖子,以显示转换后的值。对不起,原来缺乏清晰度。 (@John,我希望这会将位从一个字节传送到下一个字节) – Cam 2010-03-06 23:05:18