如何添加两个二进制数组(8位)并将结果存储在visual studio 2010中的第三个二进制数组中 - C ++。 示例:A = 00100011 B = 11011100 result_array = 11111111
我尝试使用它将B(具有十进制值)转换为二进制: std :: string binary2 = std :: bitset< 8>(B).to_string();
但是当我添加了两个二进制数组并将它们存储到第三个整数数组中时,第三个数组没有从添加操作中获取任何值,并且仍然具有默认值(即00000000)
提前致谢!
答案 0 :(得分:2)
如果您想要的结果是按位操作(如):
10101011
+11011100
=11111111
然后你需要使用按位或(|
)
uint8_t a = 0x23;
uint8_t b = 0xDC;
uint8_t c = a | b;
如果您想进行简单的添加,例如:
00000001
+00000011
=00000100
那只是补充。
uint8_t a = 1;
uint8_t b = 2;
uint8_t c = a + b;
答案 1 :(得分:0)
调用二进制数组boolean数组并从后面开始工作:
#include <iostream>
int main(int argc, char* argv[])
{
bool a[8]={0,0,1,0,0,0,1,1};
bool b[8]={1,1,0,1,1,1,0,0};
bool c[8];
bool remainder=false;
for(int x=7;x>=0;x--)
{
unsigned sum=0;
if(remainder)++sum;
if(a[x])++sum;
if(b[x])++sum;
if(sum%2==1)c[x]=true;
else c[x]=false;
if(sum>1)remainder=true;
else remainder=false;
}
for(unsigned x=0;x<8;++x)
{
std::cout << c[x];
if(x!=7)std::cout << ",";
}
std::cout << std::endl;
return 0;
}