我对编程还很陌生。我在将十进制 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/