重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
求十进制转换二进制C语言代码代码如下:
网站制作、网站设计的开发,更需要了解用户,从用户角度来建设网站,获得较好的用户体验。创新互联建站多年互联网经验,见的多,沟通容易、能帮助客户提出的运营建议。作为成都一家网络公司,打造的就是网站建设产品直销的概念。选择创新互联建站,不只是建站,我们把建站作为产品,不断的更新、完善,让每位来访用户感受到浩方产品的价值服务。
#include stdio.h
#define NR (sizeof(int)*8) // 二进制位的个数
void deciToBin(int num); // 十进制转换为二进制函数声明
/* 主函数 */
int main(void)
{
int num;
fprintf(stdout, "请输入一个正整数:");
/* 获取并检查用户输入 */
while (1)
{
if (fscanf(stdin, "%d", num) != 1)
{
fprintf(stderr, "输入错误!请重新输入:");
while (getchar() != '\n'); // 去掉多余的非法字符
continue;
}
else if (num 0) // 输入的数不能为负数
{
fprintf(stderr, "请输入错误!请输入正整数:");
continue;
}
else
break;
}
fprintf(stdout, "对应二进制为:");
#if 1 /* 方法一: 不使用递归 */
char bitArr[NR];
int i = -1;
/* 算法:栈的数学模型 */
do {
i += 1;
bitArr[i] = num % 2;
num /= 2;
} while (num != 0);
/* 逆序打印 */
for (i ; i = 0; i--)
{
fprintf(stdout, "%d", bitArr[i]);
}
fputc('\n', stdout);
#else /* 方法二: 使用递归 */
if (num == 0)
{
fprintf(stdout, "0\n");
}
else
{
deciToBin(num); // 调用第归函数
fputc('\n', stdout);
}
#endif
return 0;
}
/*
* @函数名:deciToBin
* @函数功能:实现十进制转换为二进制
* @参数:需要转换的十进制整数
*/
void deciToBin(int num)
{
/* 第归结束条件 */
if (num == 0)
{
return;
}
/* 第归调用 */
deciToBin(num/2);
/* 逆序打印 */
fprintf(stdout, "%d", num%2);
}
扩展资料:
使用C语言编程实现任意进制数(2-16进制)转换为其他任意进制数(2-16进制)方法:
#includestdio.h
#includestring.h
#includestdlib.h
int TenNum(char a[],int B);
void Numchange(int m, int B);
int TenNum(char a[], int B)
{
int len, i, num;
int sum = 0;
len = strlen(a);
for (i = 0; i len; i++)
{
if (a[i] = '0' a[i] = '9')
num = a[i] - '0';
else if (a[i] = 'A' a[i] = 'F')
num = a[i] - 'A' + 10;
sum = sum * B + num;
}
return sum;
}
void Numchange(int m, int B)
{
int n;
if (m)
{
Numchange(m / B, B);
n = m % B;
if (n 10)
printf("%d", n);
else
printf("%c", n + 55);
}
}
int main()
{
int B, b;
char a[20];
printf("请输入待转换数的进制(2-16):");
do {
scanf_s("%d", B);
} while (B 2 B 16);
printf("请输入待转换数:");
getchar();
gets_s(a);
int m = TenNum(a, B);
printf("请输入需要转成几进制数(2-16):");
do {
scanf_s("%d", b);
} while (B 2 B 16);
printf("%d进制数%s转换为%d进制数的结果为:",B,a,b);
Numchange(m, b);
printf("\n");
system("pause");
return 0;
}
方法一:
#includeiostream
#include string
using namespace std;
string DecIntToHexStr(long long num)
{ string str; long long Temp = num / 16; int left = num % 16; if (Temp 0) str +=
DecIntToHexStr(Temp); if (left 10) str += (left + '0'); else str += ('A' + left - 10); return str;}
string DecStrToHexStr(string str){ long long Dec = 0; for (int i = 0; i str.size(); ++i) Dec =
Dec * 10 + str[i] - '0'; return DecIntToHexStr(Dec);}int main()
{ string DecStr; while (cin DecStr) { cout "0x" + DecStrToHexStr(DecStr); } return 0;}
方法二:
#includeiostream
#include string
#includevector
#include sstream
#include math.h
using namespace std;int main()
{ string decStr; cin decStr; int num = stoi(decStr); vectorintv; while (num) { int bit = num % 2; v.push_back(bit); num = num / 2; }
reverse(v.begin(), v.end()); string hexStr; if (v.size() % 4 == 0) { for (int i = 0; i v.size() / 4; ++i) { int temp = 0, k = 3; for (int j = i * 4; j (i +
1) * 4; ++j) { if (v[j] == 1) temp += pow(2, k); --k; } if (temp = 9) hexStr += temp; else hexStr += ('A' + temp - 10); } }
else { int zeroNum = 4 - v.size() % 4; for (int i = 0; i zeroNum; ++i) v.insert(v.begin(), 0); for (int i = 0; i v.size() / 4; ++i) { int temp = 0, k = 3; for
(int j = i * 4; j (i + 1) * 4; ++j) { if (v[j] == 1) temp += pow(2, k); --k; }
if (temp = 9) { stringstream ss; string strTemp;
ss temp; ss strTemp; hexStr += strTemp; } else hexStr += ('A' + temp - 10); } } cout hexStr endl; return 0;}
扩展资料:
还有3种方式可以实现,其中两种是使用系统函数,另一种是直接自己编写。
下面的代码就是3种方式的实现,包括2位的整数和任意整数(2的31次方以内)都可以。可自己选择需要的实现方式。
利用系统函数有
1. char * itoa ( int value, char * str, int base );value是要转化的数字,str是转化后的字符串存储的位置,base是进制数(但是这个函数不是标准C函数,有些编译器是不支持的!)。所以代码可以为:
char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa){ itoa (aa, buffer, 16); return (buffer);}
2. sprintf(str,"%x",value);str是转化存储的位置,%x表示十六进制格式,value是要转化的数字。所以代码可以为:
char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa){ sprintf(buffer, "%x", aa); return (buffer);}
3. 自己编写
如果参数只要两位数的整数,那么很简单。
代码如下:
#include stdio.h#include stdlib.h char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa)
{ sprintf(buffer, "%x", aa); return (buffer);} int main ()
{ int num; char * hex_str; printf ("Enter a number: "); scanf ("%d",num); hex_str = inttohex (num); printf ("Hexadecimal number: %sH\n", hex_str); return 0;}
#includestdio.h
void P(int a,int n){
int i,p[30]={0};
p[0]=a;
for(i=1;i30;i++){
p[i]=p[i-1]/n;
p[i-1]%=n;}
for(i=29;i=0;i--)if(p[i]!=0)break;
for(;i=0;i--)printf("%d ",p[i]);}
int main(){
int a,n;
printf("输入一个整数\n");
scanf("%d",a);
printf("输入要转换的进制\n");
scanf("%d",n);
P(a,n);
return 0;}
1、打开visualC++6.0-文件-新建-文件-C++SourceFile。
2、输入预处理命令和主函数:
#includestdio.h /*输入输出头文件*/
voidmain()/*空类型:主函数*/
3、定义变量和数组的数据类型并输入一个十进制:
intb[16],x,k,r,i;/*定义变量和数组的数据类型为整型*/
printf("输入一个十进制:");/*输出文字提示*/
scanf("%d",x); /*输入一个十进制数字*/
k=-1;/*将-1赋给k*/
4、用除R取余倒计法将十进制的数转化成二进制的数:
do/*用循环将十进制的数转化成二进制的数*/
{
r=x%2;/*用除R取余倒计法计算二进制*/
b[++k]=r;/*将值赋给数组*/
x/=2;/*将原数除2*/
}while(x=1);
5、输出结果:
for(i=k;i=0;i--) /*将上面倒计的数正回来*/
printf("%d",b[i]);/*输出结果*/
printf("\n");
6、完整的源代码:
#includestdio.h /*输入输出头文件*/
voidmain()/*空类型:主函数*/
{
intb[16],x,k,r,i;/*定义变量和数组的数据类型为整型*/
printf("输入一个十进制:");/*输出文字提示*/
scanf("%d",x); /*输入一个十进制数字*/
k=-1;/*将-1赋给k*/
do/*用循环将十进制的数转化成二进制的数*/
{
r=x%2;/*用除R取余倒计法计算二进制*/
b[++k]=r;/*将值赋给数组*/
x/=2;/*将原数除2*/
}while(x=1);
for(i=k;i=0;i--) /*将上面倒计的数正回来*/
printf("%d",b[i]);/*输出结果*/
printf("\n");
}
**
程序功能:求二进制,十进制,八进制
创建人:蒲宇林
创建日期:2007年8月13日
**/
#include
void
two();
void
eight();
void
sixteen();
/**主函数**/
void
main()
{
int
select;
do
{
printf("0
-
退出,1
-
十进制转二进制,2
-
十进制转八进制,3
-
十进制转十六进制");
scanf("%d",select);
switch(select)
{
case
1
:
two();
break;
//十进制转二进制
case
2
:
eight();
break;
//十进制转八进制
case
3
:
sixteen();
break;
//十进制转十六进制
default
:
printf("您的输入有误,请重新输入!");
break;
}
if(select
==
0)
{
break;
}
}while(1);
}
void
two()
{
int
num,
i;
int
arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",num);
for(
i
=
;
1
;
i++)
//转换为二进制并存入数组
{
arr[i]
=
num
%
2;
num
=
num
/
2;
if(num
==
0)
{
break;
}
}
printf("转换为二进制:");
//打印
for(;
i
=
;
i--
)
{
printf("%d",arr[i]);
}
printf("\n");
}
void
eight()
{
int
num,
i;
int
arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",num);
for(
i
=
;
1
;
i++)
//转换为八进制并存入数组
{
arr[i]
=
num
%
8;
num
=
num
/
8;
if(num
==
0)
{
break;
}
}
printf("转换为八进制:");
//打印
for(;
i
=
;
i--
)
{
printf("%d",arr[i]);
}
printf("\n");
}
void
sixteen()
{
int
num,
i;
int
arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",num);
for(
i
=
;
1
;
i++)
//转换为二进制并存入数组
{
arr[i]
=
num
%
16;
num
=
num
/
16;
if(num
==
0)
{
break;
}
}
printf("转换为十六进制:");
//打印
for(;
i
=
;
i--
)
{
switch(arr[i])
{
case
10
:
printf("a");
break;
case
11
:
printf("b");
break;
case
12
:
printf("c");
break;
case
13
:
printf("d");
break;
case
14
:
printf("e");
break;
case
15
:
printf("f");
break;
default
:
printf("%d",arr[i]);
}
}
printf("\n");
}
#include "stdio.h"
int main()
{
int n;
int i=0,j;
char str[100]={0};
char output[100]={0};
printf("请输入一个整数:");
scanf("%d",n);
while(n)
{
str[i]=n%2+'0';
n=n/2;
i++;
}
for(j=0;ji;j++)
output[j]=str[i-1-j];
printf("该整数的二进制表示为:%s\n",output);
}