c语言实现 十进制 转二
时间: 2024-10-18 17:08:52 浏览: 42
在C语言中,将十进制整数转换为二进制可以使用位操作符或递归函数来实现。这里提供一种基本的非递归方法,通过循环对每位进行判断:
```c
#include <stdio.h>
// 函数用于将十进制转换为二进制字符串
void dec_to_bin(int num, char binary[64]) {
int i = 0;
while (num > 0) {
// 取余数并将其添加到结果字符串的最左边
binary[i] = num % 2 + '0'; // 由于'0'对应二进制的0,加'0'就直接得到字符表示
num /= 2; // 向右移除最低有效位
i++;
}
// 如果输入是正数,不需要补零;如果输入是负数,则需要在前面加上前缀 '-'
if (binary[0] == '0' && num == 0)
binary[0] = '-';
binary[i] = '\0'; // 结束字符串
}
int main() {
int decimal;
printf("请输入一个十进制数:");
scanf("%d", &decimal);
char binary[64];
dec_to_bin(decimal, binary);
printf("对应的二进制数是:%s\n", binary);
相关问题
c语言实现十进制转十六进制
在C语言中,将十进制转换成十六进制通常可以使用标准库函数`itoa()`或者自定义算法,比如基数转换法。`itoa()`函数已不再推荐直接使用,因为它不是C标准的一部分,但在一些系统中可能会提供。下面是一个简单的自定义函数示例,它通过循环和ASCII值来实现:
```c
#include <stdio.h>
#include <string.h>
// 自定义函数:将十进制整数转换为小写的十六进制字符串
char* dec_to_hex(int num) {
char hex[20]; // 容纳最多16位的十六进制数字加上前导'0x'
int i = 0;
if (num == 0)
hex[i++] = '0';
else {
while (num > 0) {
hex[i] = (num % 16) + '0'; // 小写字母0-9
if (hex[i] > '9')
hex[i]++;
num /= 16; // 向右移除最低位
i++;
}
// 如果最高位不足一位,添加'0'
if (i != 0 && hex[i - 1] == '0')
hex[--i] = 'x'; // 添加'0x'作为前缀
}
hex[i] = '\0'; // 结束符
return hex;
}
int main() {
int decimal = 42;
printf("Decimal: %d\nHexadecimal: %s\n", decimal, dec_to_hex(decimal));
return 0;
}
```
当你运行这个程序时,它会打印出 "Decimal: 42 Hexadecimal: 2a"。
用c语言实现十进制转换成二进制
下面是用C语言实现十进制转换成二进制的代码:
```c
#include <stdio.h>
void decimalToBinary(int decimal) {
int binary[32];
int i = 0;
while (decimal > 0) {
binary[i] = decimal % 2;
decimal = decimal / 2;
i++;
}
for (int j = i - 1; j >= 0; j--) {
printf("%d", binary[j]);
}
}
int main() {
int decimal;
printf("Enter a decimal number: ");
scanf("%d", &decimal);
printf("Binary equivalent: ");
decimalToBinary(decimal);
printf("\n");
return 0;
}
```
代码的思路是将十进制数不断除以2,将余数存储在数组中,然后倒序输出数组中的每一位。
阅读全文