使用栈进行二进制转换十进制,十进制转换成二进制的操作,运行结果如图,帮我用c语言写出代码
时间: 2024-12-20 12:28:00 浏览: 29
在C语言中,我们可以使用栈来实现二进制转十进制或反之的操作。这里我将提供一个简单的函数,用于将十进制整数转换为二进制字符串:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 功能:将十进制整数转换为二进制字符串
void decimalToBinary(int num, char* binary) {
int i = 0;
while (num > 0) {
binary[i] = num % 2 + '0'; // 将余数转换为字符并存入数组
num /= 2; // 取整除以2
i++;
}
binary[i] = '\0'; // 结束字符串
// 如果输入的是负数,需要先处理负号
if (binary[0] == '-') {
binary[0] = '\0';
for (i = 1; i < strlen(binary); i++) {
binary[i - 1] = '-';
}
}
int main() {
int decimal = 42; // 或者从用户输入获取
char binary[50]; // 确保足够大的数组存储二进制数,包括前导零
decimalToBinary(decimal, binary);
printf("十进制 %d 转换成二进制为: %s\n", decimal, binary);
return 0;
}
```
对于十进制转二进制,这个程序首先将十进制数字不断除以2取余,余数存储在栈中,然后逐次出栈拼接得到二进制字符串。注意,这个例子假设输入的十进制数非负。
如果你想反过来做,即从二进制字符串转换为十进制,可以编写一个相反的算法,从右到左遍历二进制字符串并累加相应的权重值。这需要一些额外的步骤来处理前导零。
阅读全文