我正在使用的SPI设备需要在10位值的左侧附加4位,并在右侧附加2位。
例如,假设您有一个10位值:
0110100110 - or 422
我们要在左侧添加0110
,在右侧添加00
。
结果将是:
0110011010011000
我该怎么做?
答案 0 :(得分:2)
一种简单的方法是将这些位移动到所需位置,然后使用OR运算符(|)组合这些位。
int num = 0b0110100110;
int left_bits = 0b0110;
int right_bits = 0b00;
int result = (left_bits << 12) | (num << 2) | right_bits
答案 1 :(得分:-1)
我想我已经找到了一个很好的解决方案。
由于附加的位始终是相同的值,并且在相同的位置,所以我声明一个int为6000。
然后我将10位值向左移2,或将两者一起移。
int x = 0x6000;
int y = 0xDB << 2;
int result = x ^ y;