将位追加到10位整数的开头和结尾

时间:2018-08-03 12:42:38

标签: c bit-manipulation

我正在使用的SPI设备需要在10位值的左侧附加4位,并在右侧附加2位。

例如,假设您有一个10位值:

0110100110 - or 422

我们要在左侧添加0110,在右侧添加00

结果将是:

0110011010011000

我该怎么做?

2 个答案:

答案 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;