注册 登录
编程论坛 C++教室

帮我看看这个问题

zlczx21517 发布于 2008-05-31 11:31, 471 次点击
输入一个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;
}
4 回复
#2
sunlong2008-05-31 13:56
把power函数中的变量a改为double型
#3
zlczx215172008-06-01 21:51
真的!太厉害了!
#4
newyj2008-06-01 21:57
为什么呢?
#5
janevans2008-06-02 00:26
int 类占两个字节,最多储存15位二进制位。。也就是2^15
1