c - 从十进制 int 转换为二进制 int 时遇到问题

标签 c binary

我对编程还很陌生。我在将十进制 int 转换为二进制 int 时遇到问题。目标是输入两个 ASCII 值(假设它们是 AB)并将其转换为二进制整数,而不使用数组来存储二进制值。我尝试了很多方法来尝试解决问题,但我的程序中的逻辑非常合乎逻辑,对我来说很有意义。如果输入“AB”,程序的输出为 1488373225。提前致谢!

这是我的代码:

 int converttoBinary(char input[MAX_1]){

    int temp2 = 0, rem = 0, i = 1, binary = 0, temp = 0;

    printf("\n");
    temp = input[0];
    temp2 = input[1] * 100;
    temp = temp + temp2;

    printf("%d", temp);
    while (temp > 0){
            rem = temp % 2;
            binary += rem * i;
            i *= 10;
            temp /= 2;
    }

    printf("The final binary value of %s is: %d", input, binary);

return binary;
}

最佳答案

您的代码无法正常工作的原因是 C 中的 int 不够大,无法存储这个 15 位数字,因此出现了溢出。尝试仅在一个字符上运行您的代码,您会发现它工作得很好。
正如评论中已经说过的 - 将这个“二进制”存储在 int 中是没有意义的,您可能应该将其存储为字符串。如果你只需要打印二进制格式,你可以只打印循环中的数字,而不是存储整个二进制。
另一件小事 - 它不会影响代码的结果,但是在进行按位运算时,最好使用按位运算符 - 在您的情况下 & 1 插入 % 2>> 1 而不是 /2

关于c - 从十进制 int 转换为二进制 int 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54736035/

相关文章:

javascript - 我的按位逻辑有什么缺陷?

c++ - 读取输入文件,最快的方式可能吗?

java - 生成所有可能的二进制组合

c# - 如何获取ASCII后面的二进制代码(C#)

使用 C 预处理器计算 8 位 CRC?

c - 访问动态分配数组的越界元素/w/o SegFault

c++ - 二元变量的排列及其值表

用C计算圆的面积并在主脚本中调用它

c - 需要左值 : error in c

C 字符串到数组 - 大写字符错误