我是编程新手。我在将十进制整数转换为二进制整数时遇到麻烦。目的是输入两个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;
}
答案 0 :(得分:0)
您的代码无法正常工作的原因是因为C语言中的int
不够大,无法存储此15位数字,所以出现了溢出。尝试仅在一个char上运行代码,您会发现它工作正常。
正如评论中已经说过的-将这个“二进制”存储在int
中没有意义,您可能应该将其存储为字符串。而且,如果您只需要打印二进制格式,则只需在循环中打印数字,而不用存储整个二进制文件。
另一个小问题-它不会影响代码的结果,但是在进行按位运算时,最好使用按位运算符-在您的情况下,& 1
由% 2
和>> 1
插入而不是/ 2
。