在 C++ 中添加两个二进制数组
Adding two binary arrays in C++
如何添加两个二进制数组(8 位)并将结果存储在 visual studio 2010 - C++ 中的第三个二进制数组中。
示例:A=00100011 B=11011100 result_array=11111111
我尝试使用此方法将 B(具有十进制值)转换为二进制:
std::string binary2 = std::bitset<8>(B).to_string();
但是当我添加两个二进制数组并将它们存储到第三个整数数组时,第三个数组没有从添加操作中获取任何值结果并且仍然具有默认值(即 00000000)
提前致谢!
如果您想要的结果是按位操作(如下所示):
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;
将二进制数组称为布尔数组并从后面开始工作:
#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;
}
如何添加两个二进制数组(8 位)并将结果存储在 visual studio 2010 - C++ 中的第三个二进制数组中。 示例:A=00100011 B=11011100 result_array=11111111
我尝试使用此方法将 B(具有十进制值)转换为二进制: std::string binary2 = std::bitset<8>(B).to_string();
但是当我添加两个二进制数组并将它们存储到第三个整数数组时,第三个数组没有从添加操作中获取任何值结果并且仍然具有默认值(即 00000000)
提前致谢!
如果您想要的结果是按位操作(如下所示):
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;
将二进制数组称为布尔数组并从后面开始工作:
#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;
}