如何将一个数组值合并为一个整数并上下颠倒?
example: a[]=0b1011,0b1111 to 10111111 and 10010101 to b[]=0b1001,0b0101
您需要转换类型,以便这些值可以容纳 8 位(根据您的需要,char 或 uint8 会做)。我不确定你的 4 位是什么类型。您最好将类型重新定义为 uint8 或类似 a[0] = 0b00001011。
一旦你有正确的位数需要将第一个值左移 4,然后使用按位 OR 运算符,以你的例子为例,
int8 myValue = a[0] << 4 | a[1]
这是发生了什么
按位或: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
希望有帮助。
<<
并将|
两个整数“粘贴”在一起,>>
然后&
将它们分开。
例如,(3 << 4) | 5
is 53,53 >> 4
is 3,53 & 7
is 5。
(将整数转换为二进制符号作为练习。)
tnq寻求帮助,我想要一个代码来做到这一点
a[]={1,2,3,5,8,6,7,4};
result=a[0,1,2,3]+a[4,5,6,7];
result-->9909