使用长整数值C将十进制转换为二进制

致命的鲸鱼

我的程序旨在通过从输入文件中读取值,然后将二进制值输出到输出文件中,将十进制转换为二进制。可以说输入文件具有以下数字:

190 31 5 891717742

除了891717742,一切都可以转换为二进制。这输出的值与二进制输出完全不同。香港专业教育学院尝试了一个长,但他们只是输出一个负值。例如,这将输出:

11000100 11110010 11 "1434923237" <- not right (not the actual binary values)

十进制到二进制(在线):

char* convertDecimalToBinary(int n)
{
  int binaryNumber = 0;
  int remainder, i = 1;
  static char buff[100];

    while (n!=0)
    {
        remainder = n%2;

        n /= 2;
        binaryNumber += remainder*i;
        i *= 10;
    }
    sprintf(buff, "%d", binaryNumber );
    return buff;
}
bobshowrocks

根本的问题是您试图使用int来存储二进制表示形式。一个int就是那个整数。在内存中,它以二进制形式表示,但是C语法允许您在对int赋值或执行其他操作时使用基数10和基数16的文字。这可能使它看起来好像没有被视为二进制数,但实际上确实如此。在您的程序中,您混淆了以2为底的表示和以10为底的表示。891717742(以10为基数)转换为二进制是11010100100110100010000100001101110。您的算法本质上是试图将以10为基数的110101001001101000100001101110存储在一个int中。该基数10甚至大于64位数字,实际上将需要97位存储。

检查此答案,以了解如何在C中打印出int的二进制表示形式:是否有printf转换器以二进制格式打印?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用递归将二进制整数转换为十进制整数

在 C 中使用递归将二进制转换为十进制

将列表整数类型的二进制数转换为十进制数?

整数解析不适用于将二进制转换为十进制

将非整数十进制数字转换为二进制

将字符串二进制转换为整数十进制

Arduino C / C ++将二进制字符串转换为十进制

c ++十进制转换为二进制,然后使用运算,然后返回十进制

C程序将十进制数转换为二进制字符串

将二进制转换为十进制在 C 中出错

将十进制转换为二进制的C ++循环的逻辑是什么

C ++从字符串输入将二进制转换为十进制

c++ 将十进制数转换为二进制数

使用python可视化将十进制转换为二进制

如何使用<bitset>库将二进制转换为十进制?

如何使用递归函数将十进制数转换为二进制数?

使用按位运算符将十进制转换为二进制

如何使用for循环将二进制转换为十进制?

使用CharAt()和length()将二进制转换为十进制

使用python中的函数将十进制数转换为二进制数

使用堆栈链表将十进制转换为二进制时出错

如何使用堆栈在C编程中将十进制转换为二进制

我正在使用C ++应用程序将二进制转换为十进制数字

十进制转换为二进制

在C中将十进制数转换为十亿进制数的二进制数

如何使用二进制补码手动将十六进制转换为十进制

将十进制/整数转换为二进制-如何以及为什么以这种方式工作?

十进制到二进制转换C ++

使用静态转换类中的反射和泛型将十进制转换为二进制?