C语言16进制转2进制
时间: 2023-05-21 17:04:23 浏览: 730
您好,以下是C语言将16进制转为2进制的代码:
#include <stdio.h>
int main() {
char hex_num[20];
long long bin_num = 0;
int i = 0, digit;
printf("请输入一个16进制数:");
scanf("%s", hex_num);
while (hex_num[i]) {
digit = hex_num[i];
if (digit >= '0' && digit <= '9')
digit = digit - '0';
else if (digit >= 'a' && digit <= 'f')
digit = digit - 'a' + 10;
else if (digit >= 'A' && digit <= 'F')
digit = digit - 'A' + 10;
bin_num = (bin_num * 16) + digit;
i++;
}
printf("转换后的2进制数:%lld", bin_num);
return 0;
}
相关问题
c语言16进制转2进制
以下是一个简单的c语言程序,可以将16进制数转换为2进制数:
```c
#include <stdio.h>
void hexToBin(char hex[]) {
int i = 0;
printf("Binary equivalent: ");
while (hex[i]) {
switch (hex[i]) {
case '0':
printf("0000 ");
break;
case '1':
printf("0001 ");
break;
case '2':
printf("0010 ");
break;
case '3':
printf("0011 ");
break;
case '4':
printf("0100 ");
break;
case '5':
printf("0101 ");
break;
case '6':
printf("0110 ");
break;
case '7':
printf("0111 ");
break;
case '8':
printf("1000 ");
break;
case '9':
printf("1001 ");
break;
case 'A':
case 'a':
printf("1010 ");
break;
case 'B':
case 'b':
printf("1011 ");
break;
case 'C':
case 'c':
printf("1100 ");
break;
case 'D':
case 'd':
printf("1101 ");
break;
case 'E':
case 'e':
printf("1110 ");
break;
case 'F':
case 'f':
printf("1111 ");
break;
default:
printf("\nInvalid hexadecimal digit %c", hex[i]);
return;
}
i++;
}
}
int main() {
char hex[100];
printf("Enter a hexadecimal number: ");
scanf("%s", hex);
hexToBin(hex);
return 0;
}
```
该程序首先提示用户输入一个16进制数,然后将该数传递给`hexToBin`函数进行转换,并输出结果。`hexToBin`函数使用一个`switch`语句将每个16进制数字转换为相应的4位2进制数字,并在控制台上输出它们。如果输入的数字包含非十六进制字符,则输出错误消息。
C语言16进制转2进制的程序
下面是一个C语言的程序,用于将16进制数转换为2进制数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char hex_num[10], bin_num[40] = "";
int dec_num, i, j = 0;
printf("请输入一个16进制数:");
scanf("%s", hex_num);
dec_num = (int)strtol(hex_num, NULL, 16);
while (dec_num != 0) {
int remainder = dec_num % 2;
dec_num /= 2;
char remainder_str[2];
sprintf(remainder_str, "%d", remainder);
strcat(bin_num, remainder_str);
j++;
}
printf("转换为2进制数为:");
for (i = j - 1; i >= 0; i--) {
printf("%c", bin_num[i]);
}
printf("\n");
return 0;
}
```
程序首先让用户输入一个16进制数,然后使用`strtol()`函数将其转换为10进制数。接着,程序通过不断地除以2,得出16进制数对应的2进制数,并将每一位的余数存储在一个字符数组中。最后,程序将字符数组中的元素倒序输出,即为16进制数对应的2进制数。
例如,如果用户输入`3F`,程序将输出:
```
请输入一个16进制数:3F
转换为2进制数为:111111
```
希望对你有所帮助!
阅读全文