如何实现几个字节同事偏移N位(按bit位偏移)?

2019-07-21 06:27发布

比如有一个三个元素的数组,转换成二进制 内容如下  00001111 00001111 00001111  ,让他们同时往左偏移3个bit位  变成 00000001 11100001 11100001  如何用C语言来实现呢?越简短越好谢谢各位网友


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
xiatianyun
2019-07-21 18:28
本帖最后由 xiatianyun 于 2018-12-22 10:59 编辑

如果元素个数是三个,问题比较简单,可如果个数未知就只能单个右移了。
对以,你要求左移,怎么你右移了呢?

#include <stdio.h>

int main(void)
{
    unsigned char a[3] = {0x0f,0x0f,0x0f};
    unsigned int* p = (unsigned int*)a;
    *p = (*p) >> 3;
   
    printf("右移三位是:%d ", *p);
}

一周热门 更多>