例如,我有两个数字位:
0b0111111 0b0000110
我想把一个状态变量移7位数,然后把它们组合在一起。
0b00001100111111
我可以通过移动来完成吗?
fumotvh31#
您可以通过将底部数字左移7位,然后对结果和第一个数字执行按位OR来实现此操作。
unsigned int a = 0x3f; unsigned int b = 0x06; unsigned int result = (b << 7) | a;
qvtsj1bj2#
unsigned int X = 0b00111111; unsigned int Y = 0b00000110; unsigned int Z = ((X << 7) & 0xFF00) | Y;
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
b0zn9rqh4#
int a = 0b0111111; int b = 0b0000110; int combined = (a << 7) | b;
4条答案
按热度按时间fumotvh31#
您可以通过将底部数字左移7位,然后对结果和第一个数字执行按位OR来实现此操作。
qvtsj1bj2#
rqcrx0a63#
b0zn9rqh4#