在c中将2个16位字连接成一个16位字

Concatenate 2 16 bit words into one 16 bit word in c

我正在尝试获取一个词的最低 4 位和另一个词的最高 12 位,并将它们连接成一个词。我在 C 语言中工作,过去我并没有用太多。

int a;
int b;
int c;
int a_masked;
int b_masked;
a = 0x1234;
b = 0xABCD;

a_masked = a & 0X000F;
b_masked = b & 0xFFF0;

c = ((a_masked << 12) || b_masked >> 4);

printf("%d", c);

C应该是4ABC,但是我的结果是1。

您使用的

|| 运算符是一个 逻辑运算符 OR 运算符,它 returns 0 或 1。

您应该使用 按位 OR 运算符 |(一条垂直线,而不是两条)。