-3

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

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

3 回答 3

1

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

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

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

这是发生了什么

  • Bitshift: 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

希望有帮助。

于 2018-10-25T13:09:01.440 回答
0

<<并将|两个整数“粘贴”在一起,>>然后&将它们分开。

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

于 2018-10-25T11:10:03.930 回答
0

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

a[]={1,2,3,5,8,6,7,4};
result=a[0,1,2,3]+a[4,5,6,7];
result-->9909
于 2018-10-25T16:57:47.887 回答