zlczx21517 发表于 2008-5-31 11:31

帮我看看这个问题

输入一个32位的二进制数(无符号的),转换为一个十进制数,比如 1000~~0,可是出来的却是个负数!不知道为什么啊?


#include<iostream.h>
double power(int n)
{
        int i,a(1);
        for(i=0;i<=n-1;i++)
                a=a*2;
        return a;
}
void main(void)
{
        int i;double sum(0);
        char ch;
        cout<<"input the number"<<endl;
        for(i=31;i>=0;i--)
        {
                cin>>ch;
                if(ch=='1')
                sum+=power(i);
       
        }
        cout<<"thr number is"<<sum<<endl;
}

sunlong 发表于 2008-5-31 13:56

把power函数中的变量a改为double型

zlczx21517 发表于 2008-6-1 21:51

真的!太厉害了!

newyj 发表于 2008-6-1 21:57

为什么呢?

janevans 发表于 2008-6-2 00:26

int 类占两个字节,最多储存15位二进制位。。也就是2^15

页: [1]

编程论坛