将数字转换为二进制数
的程序#include<iostream>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
using namespace std;
int main(void)
{
system("cls");
long Dec,Rem,Bin=0;
int i=1;
cout<<"Enter Dec number::";
cin>>Dec;
do
{
Rem=Dec%2;
Bin = Bin + Rem*i;
Dec=Dec/2;
i*=10;
}while(Dec>0);
cout<<endl<<Bin;
return 0;
}
将数字转换为二进制数
的程序#include<iostream>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
using namespace std;
int main(void)
{
system("cls");
long Dec,Rem,Bin=0;
int i=0;
cout<<"Enter Dec number::";
cin>>Dec;
do
{
Rem=Dec%2;
Bin = Bin + Rem*pow(10,i);
Dec=Dec/2;
i++;
}while(Dec>0);
cout<<endl<<Bin;
return 0;
}
这两个程序给出了不同的结果,但逻辑是相同的。不知道是什么问题,无法搞清楚。 (#是写的,所以这不是错误。)
答案 0 :(得分:0)
函数pow返回一个double值。问题可能是它与第二个片段中同一句子中的长整数一起使用。尝试将此行更改为:
Bin = Bin + Rem*((long) pow(10,i));