#include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #include<algorithm> using namespace std; int main() { int a,b,s=0,s1=0,i=0,na=0,nb=0; cin>>a>>b; if(a<=0) na=1,a*=-1; while(a!=0) { if(a%2!=0) s+=pow(2,a%2*i); a/=2; i++; } i=0; if(na==1) s*=-1; if(b<=0) nb=1,b*=-1; while(b!=0) { if(b%2!=0) s1+=pow(2,b%2*i); b/=2; i++; } if(nb==1) s1*=-1; cout<<s+s1;; return 0; }
时间: 2024-04-18 14:23:38 浏览: 142
c++所有头文件
5星 · 资源好评率100%
这段代码是一个将两个十进制数转换为二进制数后相加的程序。
代码首先读取两个输入的十进制数 `a` 和 `b`。然后,通过循环将每个数转换为二进制形式并相加。在转换过程中,代码使用了取余操作符 `%` 来判断当前位的值,并使用了 `pow` 函数来计算对应的二进制位的权值(即 2 的幂)。最后,将转换后的二进制数加并输出结果。
需要注意的是,代码中使用了 `pow` 函数来进行幂运算,但是由于该函数返回的是一个浮点数,可能会引入精度问题。在处理整数运算时,可以考虑使用位运算和移位操作来进行二进制转换和相加,以提高效率和准确性。
此外,代码中还对输入的十进制数进行了符号处理,将其转换为对应的负数形式并在最后计算结果时进行相应的处理。
总体而言,这段代码是一个简单的实现二进制数相加的程序,但可能存在一些精度和效率问题,可以进行优化和改进。
阅读全文