如何将一个数组值合并为一个整数 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
如何将一个数组值合并为一个整数并上下颠倒?
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