求十进制转换二进制C语言代码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求十进制转换二进制C语言代码相关的知识,希望对你有一定的参考价值。
如果不愿意帮忙,可以无视,请不要讲风凉话
求十进制转换二进制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进制)方法:
#include<stdio.h>
#include<string.h>
#include<stdlib.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;
参考技术A 因为没有以二进制输入的“%”的格式所以麻烦了点。(有错见谅)#include<stdio.h>
int change(int k);
int main()
int n;
printf("进制转换:\n");
printf("请输入一个十进制数:");
scanf("%d",&n);
printf("转换成二进制是:%d\n",change(n));
printf("转换成八进制是:0%o\n",n);
printf("转换成十六进制是:0x%x\n",n);
int change(int k)
int i=1,j,m,s=0;
m=k;
while(m)
j=m%2;
s+=j*i;
i*=10;
m/=2;
return(s);
参考技术B #include "stdlib.h"
void main()
int n,x=0,a[100];
printf("请输入转换的数:\n");
scanf("%d",&n);
while(n)
a[x++]=n%2;
n/=2;
--x;
while(x>=0)
printf("%d",a[x--]);
给你吧蛮简单的 参考技术C #include <stdio.h>
int main()
int a;
scanf("%d", &a);
int i=0;
int bin[32];
while(a>0)
bin[i]=a%2;
a/=2;
i++;
for(int j=i-1;j>=0;j--)
printf("%d",bin[j]);
本回答被提问者采纳
求java编程 二进制十进制互相转化
求求求。
java中有现在的api
10进制转二进制
Integer.toBinaryString(int i);
二进制转十进制
Integer.parseInt("1001",2);
建议多看看JDK文档,这里文档里都有介绍的
//10进制->2进制
String a = "-1195";//输入数值
BigInteger src = new BigInteger(a);//转换为BigInteger类型
System.out.println(src.toString(2));//转换为2进制并输出结果
//2进制->10进制
String a = "10010101011";//输入数值
BigInteger src = new BigInteger(a, 2);//转换为BigInteger类型
System.out.println(src.toString());//转换为2进制并输出结果
注意下面两个要点:
1. BigInteger的构造函数
BigInteger(String src)默认参数字符串为10进制数值
BigInteger(String src, int x)第2个参数x是指定第一个参数src的进制类型
2. toString方法
toString()默认把数值按10进制数值转化为字符串。
toString(int x)把数值按参数x的进制转化为字符串。 参考技术B //二进制转十进制数字
public static int binaryToDec(String binaryValue)
int dec = 0;
for(int i=0; i<binaryValue.length(); i++)
dec = dec * 2 + (binaryValue.charAt(i) - '0');
return dec;
//十进制转二进制字符串
public static String decToBinary(int decValue)
StringBuilder binaryValue = new StringBuilder();
do
int temp = decValue % 2;
binaryValue.append((char)(temp + '0'));
decValue /= 2;
while(decValue != 0);
return binaryValue.reverse().toString();
参考技术C public static void main(String args[])
String s = "101011110001";
int x = 0;
for(char c: s.toCharArray())
x = x * 2 + (c == '1' ? 1 : 0);
System.out.println(x);
String a="010";
int d = Integer.parseInt(a, 2); // 2进制
int o = Integer.parseInt(a, 8); // 8进制
System.out.println(d);
System.out.println(o);
以上是关于求十进制转换二进制C语言代码的主要内容,如果未能解决你的问题,请参考以下文章
c语言辗转相除法 将十进制转换成任意进制的数 运行结果出错,与正确不符,求指导哪里出错
求C语言将十六进制字符串转换为整型int的函数源代码,要求不能用库函数?