【发布时间】:2021-03-18 20:17:07
【问题描述】:
我正在尝试获取一个单词的最低有效 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。
【问题讨论】:
-
注意:
%x和%X将打印一个十六进制的int,这样可以更容易地查看您的按位操作是否成功。 -
除了
||,在移动 signed 值时注意它(即可能不这样做):stackoverflow.com/q/7622/6372809
标签: c concatenation bit-shift