标签:进制 print void sizeof 二进制 eof ring system chm
二到十
十到十六
十到二
十六到十
//二进制转换十进制
10111B=1x24 + 0x23 +1 x22 +1
x21 +1 x20=
23
十六进制转换十进制
125H=1×162+2×161+5×160=293D
十进制转换二进制的方法,不停的除以2,直到商为0,将每一步得到的余数倒着串起来即可
50D=
50
÷ 2 =25 //余数为0
25 ÷ 2 =12 //余数为1
12 ÷ 2 =6 //余数为0
6 ÷ 2 =3
//余数为0
3 ÷ 2 =1 //余数为1
1 ÷ 2 =0 //余数为1
十六进制转换十进制
125H=1×162+2×161+5×160=293D
十进制转换十六进制
293D=
293
÷ 16 = 18 //余数5
18 ÷ 16 = 1 //余数2
1
÷ 16
=0 //余数为1
125H=293D
void 二到十(char *p_二进制, char * p_十进制)
{
int l_十进制 = 0;
int l_次方 = strlen(p_二进制) - 2;
for (size_t i = 0; i
< strlen(p_二进制) - 1; i++) {
l_十进制 = l_十进制 + (p_二进制[i] - 48)*pow(2,
l_次方);
l_次方 = l_次方 - 1;
}
itoa(l_十进制, p_十进制,
10);
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
void 十到二(char *p_输入数, char *p_进制) {
//50 ÷ 2 = 25 //余数为0
//25 ÷ 2 = 12 //余数为1
//12 ÷ 2 = 6 //余数为0
//6 ÷ 2 = 3 //余数为0
//3 ÷ 2 = 1 //余数为1
//1 ÷ 2 = 0 //余数为1
int l_v1 = atoi(p_输入数);
int l_v2;
int 结果[10] = { 0 };
int 索引=0;
while (l_v1 > 0) {
结果[索引] = l_v1 % 2;
l_v1 = l_v1 / 2;
索引 = 索引 + 1;
}
for (size_t i = 0; i <= 索引/2; i++)
{
l_v2 = 结果[i];
结果[i] = 结果[索引-i];
结果[索引 - i] = l_v2;
}
for (size_t i = 0; i < 索引+1; i++)
{
printf("%d", 结果[i]);
}
}
void main() {
char 进制数[100] = { 0 };
char 进制[10] = { 0 };
printf("请输入进制数");
fgets(进制数, sizeof(进制数), stdin);
进制数[strlen(进制数) - 1] = 0;
printf("请输入进制");
fgets(进制, sizeof(进制), stdin);
进制[strlen(进制) - 1] = 0;
if (strcmp(进制, "2") == 0) {
十到二(进制数, 进制);
}
system("pause");
}
标签:进制 print void sizeof 二进制 eof ring system chm
原文地址:http://www.cnblogs.com/xiaodaxiaonao/p/7896343.html