C语言 有没有一种方法可以使用按位运算符来合并数字位?

wxclj1h5  于 2023-04-05  发布在  其他
关注(0)|答案(4)|浏览(127)

例如,我有两个数字位:

0b0111111
0b0000110

我想把一个状态变量移7位数,然后把它们组合在一起。

0b00001100111111

我可以通过移动来完成吗?

fumotvh3

fumotvh31#

您可以通过将底部数字左移7位,然后对结果和第一个数字执行按位OR来实现此操作。

unsigned int a = 0x3f;
unsigned int b = 0x06;
unsigned int result = (b << 7) | a;
qvtsj1bj

qvtsj1bj2#

unsigned int X = 0b00111111;
unsigned int Y = 0b00000110;

unsigned int Z = ((X << 7) & 0xFF00) | Y;
rqcrx0a6

rqcrx0a63#

unsigned char a = 0b00000110;
unsigned char b = 0b01111111;
unsigned short c = (b << 8); // shift everything left 8 bits to set the high bits
c &= 0xFF00; // clear out the lower bits - not necessary in C
c |= a; // set the lower 8 bits
b0zn9rqh

b0zn9rqh4#

int a = 0b0111111;
int b = 0b0000110;

int combined = (a << 7) | b;

相关问题