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

2019-07-21 06:27发布

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


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
Jasonlearning
2019-07-21 08:56
int main() {
        int a[3] = { 0x0f,0x0f,0x0f }, b[3] = {0,0,0};
        int t = 0,tt;
        t |= a[0] << 16;
        t |= a[1] << 8;
        t |= a[2];
        t = t >> 3;
        tt = t;
        printf("0x%x ",t);
        b[0] |= t >> 16;

        tt &= 0xff00;

        b[1] |= tt >> 8;

        t &= 0xff;
        b[2] |= t;
        for (int j = 0; j < 3; j++)
        {
                printf("b[%d]=0x%x ",j,b[j]);
        }
}

一周热门 更多>