两个程序的不同输出将数字转换为二进制

时间:2014-02-04 17:03:38

标签: c++

将数字转换为二进制数

的程序
#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;
}

这两个程序给出了不同的结果,但逻辑是相同的。不知道是什么问题,无法搞清楚。 (#是写的,所以这不是错误。)

1 个答案:

答案 0 :(得分:0)

函数pow返回一个double值。问题可能是它与第二个片段中同一句子中的长整数一起使用。尝试将此行更改为:

Bin = Bin + Rem*((long) pow(10,i));