问题描述
我正在尝试获取一个字的最低 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 运算符,它返回 0 或 1。
您应该使用按位 OR 运算符|
(一条垂直线,而不是两条)。