MCP*_*MCP 11 c bit-manipulation
我有一个字符数组,我试图按位向右移位>>,然后&用另一个数组.我想我对如何做到这一点有错误的想法.
我想,即使它是一个字符数组只是说明my_array >>= 1会改变一切,但我收到一个错误:"error: invalid operands to binary >> (have ‘char[8]’ and ‘int’)"
我试图做的按位比较是使用类似大小的数组启动所有"0"...为此我得到: "error: invalid operands to binary & (have ‘char *’ and ‘char *’)"
在转换和比较之前,我是否需要将这些数组转换为其他数组?
对不起,我不是很清楚...到目前为止所有很好的建议,我想我更多地意识到没有超级简单的方法来做到这一点.更具体地说,我要做的是将WHOLE字符数组的位右移1,将右移的位移回数组的最左侧,与另一个相同大小的数组进行逐位比较.
从技术上讲,比较不必是数组的数组......我只需要比特.在尝试进行转换/比较之前,将数组转换为其他内容会更容易吗?
Dan*_*her 14
你必须转移和比较元素.
for(i = 0; i < len; ++i)
array[i] >>= 3;
Run Code Online (Sandbox Code Playgroud)
例如.如果你想将从一个元素移出的位移动到下一个元素,那就更复杂了,比如你向右移动,然后
unsigned char bits1 = 0, bits2 = 0;
for(i = len-1; i >= 0; --i) {
bits2 = array[i] & 0x07;
array[i] >>= 3;
array[i] |= bits1 << 5;
bits1 = bits2;
}
Run Code Online (Sandbox Code Playgroud)
因为你需要来自下一个更高插槽的位,所以在另一个方向上遍历数组.