c语言转换二进制函数 c语言转化为二进制函数

十进制如何转二为二进制?(C语言)c语言编程将十进制转化为2进制可按手工转换规则进行程序转换 。
整数占四个字节c语言转换二进制函数,每字节8位c语言转换二进制函数,共32位 。所以 , 可以定义一个32位c语言转换二进制函数的数组来存储转换结果 。
循环将整数进行除2取余数,余数存储到数组中 。
当整数整除为0时,结束循环
逆序输出数组,得到转换结果
参考代码:
#include stdio.h
void main()
{
int c[32],i=0,n;
scanf("%d", n) ; //输入待转换整数n
do {
c[i]=n%2;
n/=2;
} while(n!=0) ;
for(i--;i=0;i--)
printf("%d",c[i] );
printf("\n");
}
c语言二进制转换计算机运行二进制代码后呈现出人可以识别c语言转换二进制函数的非二进制形式c语言转换二进制函数,是由输出语句来完成c语言转换二进制函数的 。
例如printf() 函数c语言转换二进制函数,会将二进制值转化为指定c语言转换二进制函数的格式字符串进行输出 。
C语言:怎么将十六进制字符串转换成二进制字符串,谁帮我写个函数十六进制转成十进制的函数:
//返回16进制字符串s对应的整数值,遇到任何一个非法字符都返回-1 。
int
HexToDec(char
*s)
{
char
*p
=
s;
//空串返回0 。
if(*p
==
'\0')
return
0;
//忽略开头的'0'字符
while(*p
==
'0')
p;
int
dec
=
0;
char
c;
//循环直到字符串结束 。
while(c
=
*p)
{
//dec乘16
dec
=
4;
//数字字符 。
if(c
=
'0'
c
=
'9')
{
dec
=
c
-
'0';
continue;
}
//小写abcdef 。
if(c
=
'a'
c
=
'f')
{
dec
=
c
-
'a'
10;
continue;
}
//大写ABCDEF 。
if(c
=
'A'
c
=
'F')
{
dec
=
c
-
'A'
10;
continue;
}
//没有从任何一个if语句中结束,说明遇到了非法字符 。
return
-1;
}
//正常结束循环 , 返回10进制整数值 。
return
dec;
}
十进制转成二进制的函数:
/*递归法求二进制数*/
#include
void
printb(int
x,int
n);
void
main()
{
int
x;
printf("input
number:");
scanf("%d",x);
printf("number
of
decimal
form:
%d\n",x);
printb(x,sizeof(int)*8);
putchar('\n');
}
void
printb(int
x,int
n)
{
if(n0)
{
putchar('0' (
(unsigned)(x
(1(n-1)
)
)(n-1)));
printb(x,n-1);
}
}
求十进制转换二进制C语言代码求十进制转换二进制C语言代码代码如下c语言转换二进制函数:
#include stdio.h
#defineNR (sizeof(int)*8)// 二进制位的个数
void deciToBin(int num);// 十进制转换为二进制函数声明
/* 主函数 */
int main(void)
{
int num;
fprintf(stdout, "请输入一个正整数:");
/* 获取并检查用户输入 */
while (1)
{
if (fscanf(stdin, "%d", num) != 1)
{
fprintf(stderr, "输入错误c语言转换二进制函数!请重新输入:");
while (getchar() != '\n'); // 去掉多余的非法字符
continue;
}
else if (num0)// 输入的数不能为负数
{
fprintf(stderr, "请输入错误c语言转换二进制函数!请输入正整数:");
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进制)转换为其c语言转换二进制函数他任意进制数(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; ilen; 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 * Bnum;
}
return sum;
}
void Numchange(int m, int B)
{
int n;
if (m)
{
Numchange(m / B, B);
n = m % B;
if (n10)
printf("%d", n);
else
printf("%c", n55);
}
}
int main()
{
int B, b;
char a[20];
printf("请输入待转换数的进制(2-16):");
do {
scanf_s("%d", B);
} while (B2B16);
printf("请输入待转换数:");
【c语言转换二进制函数 c语言转化为二进制函数】getchar();
gets_s(a);
int m = TenNum(a, B);
printf("请输入需要转成几进制数(2-16):");
do {
scanf_s("%d", b);
} while (B2B16);
printf("%d进制数%s转换为%d进制数的结果为:",B,a,b);
Numchange(m, b);
printf("\n");
system("pause");
return 0;
}
c语言: 编写递归函数把输入的一个负整数转换成二进制输出根据评论要求,改进代码:
1、函数getBCode是题目要的递归函数,实现转二进制(最高位是符号位) 。
思路是十进制数绝对值除以2求余,得到反向二进制原码,反向创建链表保存结果,最终得到的单向链表就是完整二进制数原码,之后根据正负性 , 负数取反 1 。链表头添加符号位 。
2、函数freeBny为释放链表 , 如要重复调用函数getBCode , 每次调用需调用一次freeBny 。
3、函数showBny是打印输出 , 为对齐显示 , 按4的倍数位打印,高位补齐的位数值均与符号位一致 。
#include stdio.h
#include malloc.h
#include math.h
typedef struct binary//成员用char类型保存数值,不是'1'或'0'的ASCII码
{
char b;//一位二进制数0或1
struct binary *next;
}BNY;
BNY *getBCode(int n);//获得二进制数(最高位是符号位)
void showBny(BNY *bnyHead);//对齐打印二进制数(保证是4的倍数)
void freeBny(BNY *bnyHead);//释放二进制数链表空间
int main()
{
int n;
BNY bny,*bnyHead=bny;
while(1)
{
printf("请输入一个整数:"),scanf("%d",n);
bnyHead-next=getBCode(n);
printf("转为二进制数:"),showBny(bnyHead);
freeBny(bnyHead);
printf("\n");
}
return 0;
}
void freeBny(BNY *bnyHead)
{
BNY *prev=NULL,*bny=NULL;
bny=bnyHead-next;
while(bny)
{
if(prev) prev-next=NULL,free(prev),prev=NULL;
prev=bny;
bny=bny-next;
}
bnyHead-next=NULL;
}
void showBny(BNY *bnyHead)
{
int i,f=-1,len=0,n=0;
BNY *bnySave=bnyHead;
while(bnyHead-next)
{
if(f==-1) f=bnyHead-next-b;
len;
bnyHead=bnyHead-next;
}
if(len%4)
n=4-len%4;
for(i=0;in;i)printf("%d",f);
bnyHead=bnySave;
while(bnyHead-next)
{
printf("%d",bnyHead-next-b);
n;
if(n==4)printf(" "),n=0;
bnyHead=bnyHead-next;
}
}
BNY *getBCode(int n)
{
int s,y;
static BNY*bnyPrev=NULL;
static int cy=0,f=-1;//加1进位用
if(f==-1n=0)f=1;
if(f==-1n0)f=0,cy=1;
n=abs(n);
BNY *bnyNew=NULL;
s=n/2,y=n%2;
bnyNew=(BNY *)malloc(sizeof(BNY));
if(!bnyNew) return NULL;
bnyNew-b=y;
// 如是负数,直接取反 1
if(!f) bnyNew-b=!(bnyNew-b);//从最低位开始 , 负数取反
if(cy)bnyNew-b=bnyNew-b cy,cy=0;//负数 1
if(bnyNew-b1)bnyNew-b=0,cy=1;
bnyNew-next=NULL;
if(bnyPrev) bnyNew-next=bnyPrev;
bnyPrev=bnyNew;
n=s;
if(n==0)
{
bnyNew=(BNY *)malloc(sizeof(BNY));//添加符号位
if(!bnyNew) return NULL;
if(!f)
bnyNew-b=1;
else
bnyNew-b=0;
bnyNew-next=bnyPrev;
bnyPrev=NULL;
cy=0,f=-1;
return bnyNew;
}
return getBCode(n);
}
C语言 把char 型 或者 整数转化成二进制 要怎么转这个可以使用itoa函数
itoa为c语言的一个函数 。itoa函数是一个广泛应用的,从非标准扩展到标准的C语言 。它不能被移植,因为它不是标准定义下的C语言,但是,编译器通常在一个不遵循程式标准的模式下允许其通过header
,因为它是一个从逻辑对应到标准库的函数 。itoa取整数输入值,并将其转换为数字的基数 。


char
*itoa(
int
value,
char
*string,int
radix);


把一整数转换为字符串


itoa(i,num,10);
i
----需要转换成字符串的数字
num----
转换后保存字符串的变量
10----
转换数字的基数(即进制) 。10就是说按10进制转换数字 。还可以是2,8,16等等你喜欢的进制类型
返回值:指向num这个字符串的指针
程序例:
#include
#include
int
main(void)
{
int
number
=
12345;
char
string[25];
itoa(number,
string,
10);
printf("integer
=
%d
string
=
%s\n",
number,
string);
return
0;
}
char
*itoa(int
value,char
*string,int
radix)
将整数value转换成字符串存入string,
radix为转换时所用基数(保存到字符串中的数据的进制基数)
关于c语言转换二进制函数和c语言转化为二进制函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读