Ast*_*lus 2 c++ binary bit-manipulation bitwise-operators
如果我的问题令人困惑,我很抱歉,但这是我想要做的例子,
让我说我有一个无符号long int = 1265985549二进制我可以把它写成01001011011101010110100000001101
现在我想把这个二进制32位数分成4位,就像这样,分别在这4位上工作
0100 1011 0111 0101 0110 1000 0000 1101
任何帮助,将不胜感激.
您可以k使用位操作获得位置的4位半字节,如下所示:
uint32_t nibble(uint32_t val, int k) {
return (val >> (4*k)) & 0x0F;
}
Run Code Online (Sandbox Code Playgroud)
现在你可以在循环中获得单个半字节,如下所示:
uint32_t val = 1265985549;
for (int k = 0; k != 8 ; k++) {
uint32_t n = nibble(val, k);
cout << n << endl;
}
Run Code Online (Sandbox Code Playgroud)