繁体   English   中英

我一直在尝试编写一个程序来将十进制转换为二进制,我不知道我的代码有什么问题? 我正在使用代码块

[英]I have been trying to write a program to convert decimal to binary , I don't know what is wrong with my code ? i am using codeblocks

这是我的代码,我认为移位运算符有问题,我在嵌入式软件中使用了它们,但我不知道是否可以在普通代码中使用它们,我已经编写了一个代码来实现相同的目的,但是使用添加 (2*10^digit) 的方法,但如果可能的话,使用移位似乎更容易,请帮助:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double find_power(double x);
int main()
{
    double bin=00000000, dec , k ;
    printf("enter decimal number:\n");
    scanf("%d",&dec);
    for(;;)
    {
        k=find_power(dec);
        bin|=(1<<k);
        dec-=pow(2,k);
        if(dec==1)
        {
            bin|=(1<<0);
            break;
        }
        else if(dec==0)
        {
            bin&=(~(1<<0));
            break;
        }

    }

    printf("%d",bin);
    return 0;
}

double find_power(double x)
{
    double i=1,j=0;
    for(;;)
    {
        i*=2;
        if(x>=i)
        {
            j++;
        }
        else if(x<i)
        {
             break;
        }

    }
    return j;
}

你在整个代码中疯狂地混合了doubleint 您尝试使用 scanf 将int读入double ,这会调用未定义的行为。 然后您尝试将double变量与按位运算符一起使用,这很可能没有任何意义。 您将需要使用已知大小的无符号整数。

您应该启用/收听编译器警告。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM