如何将一个数组值合并为一个整数 C++

how can merge one array values in one integer c++

如何将一个数组值合并为一个整数并上下颠倒?

example: a[]=0b1011,0b1111 to 10111111 and 10010101 to b[]=0b1001,0b0101

<<|把"paste"两个整数放在一起,>>&把它们分开。

例如(3 << 4) | 5是53,53 >> 4是3,53 & 7是5。
(将整数转换为二进制符号留作练习。)

您需要转换类型,以便值可以容纳 8 位(char 或 uint8 可以根据您的需要执行)。我不确定你有什么类型的 4 位。您最好将类型重新定义为 uint8 或 a[0] = 0b00001011.

一旦你有正确的位数需要将第一个值左移 4,然后使用按位或运算符,以你的例子为例,

int8 myValue = a[0] << 4 | a[1]

这是怎么回事

  • 位移位:a[0] << 4 表示将每个位向左移动 4 次,因此 0b00001011 变为 0b10110000(进入右侧的位默认为 0)
  • 按位或:a[0] << 4 |一个[1],|比较 a[0] 和 a[1] 的每一位。如果其中一个位是 1,它给出一个 1,如果两个都是 0,它给出一个 0,即

    10110000 | 00001111 = 10111111

我假设你的意思是颠倒?

你需要使用按位AND &,做类似的事情所以我不会再详细解释了,但是这个

a[0] = (myValue & 0b1111000) >> 4 = 00001011

a[1] = myValue & 0b00001111 = 00001111

希望对您有所帮助。

tnq 寻求帮助,我想要一个代码来做到这一点

a[]={1,2,3,5,8,6,7,4};
result=a[0,1,2,3]+a[4,5,6,7];
result-->9909