小编Dom*_*nic的帖子

如何重新排列位?

我必须在一个字节中rearagne位.我解决了这个问题:

uint8_t c;
uint8_t string[3];

string1[2] = (((c&(1<<0))!=0)<<6)|
             (((c&(1<<1))!=0)<<1)|
             (((c&(1<<2))!=0)<<0)|
             (((c&(1<<3))!=0)<<2)|
             (((c&(1<<4))!=0)<<3)|
             (((c&(1<<5))!=0)<<4)|
             (((c&(1<<6))!=0)<<5)|
             (((c&(1<<7))!=0)<<7);
Run Code Online (Sandbox Code Playgroud)

basicly:

如果bit0为1,则向左移动1 6次.

如果bit1为1,则向左移动1 0次.....

有更好的解决方案吗?

c bit-shift

0
推荐指数
1
解决办法
348
查看次数

标签 统计

bit-shift ×1

c ×1