在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