当前位置:首页 » 编程语言 » 二进制输出c语言代码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

二进制输出c语言代码

发布时间: 2022-04-28 21:46:37

c语言的二进制数值如何直接输出

  1. C标准没有输出二进制的,不过用itoa()可以实现到二进的转换

  2. 可以使用itoa函数把变量的数值转换成2进制字符串,再用输出函数输出。

  3. 用 法:char *itoa(int value, char *string, int radix);

  4. 详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.

  5. 参数:value: 待转化的整数。

  6. radix: 是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。

  7. * string: 保存转换后得到的字符串。

  8. 返回值:char * : 指向生成的字符串, 同*string。

  9. 备注:该函数的头文件是"stdlib.h"

Ⅱ 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(" ");

}

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;i<n;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==-1 && n>=0)f=1;

if(f==-1 && n<0)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->b>1)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语言中怎样输出一个二进制的数

//我们用按位运算符:右移>>和按位运算符与^,这两个功能就可以实现。
#include<stdio.h>
voidprintBinary(intnumber);//这是声明一个自定义的函数,让编译器知道我们造了一个这么个函数,功能:将整数以二进制形式输出。

intmain()
{
printBinary(22);//括号里面可以填上你要输出的整数,比如要输出22的二进制形式
return0;
}
voidprintBinary()//自定义一个函数printBinary
{
inttemp=sizeof(number)-1;//定义一个变量:如果你的编译器是32位的,也就是inttemp=31;

while(temp>=0)//temp是循环的次数,不需要纠结判断是>=还是>,写完之后检验一下就知道哪个对了。

intvalue=number>>temp^1;//a>>temp。temp移动后,是把这个整数的二进制形式中最后一位,依次与1进行按位与运算。假如temp=31,就是把这个整数的二进制形式右移31位,只剩下了这个整数的二进制形式的开头第一个数字,然后与1进行按位与运算。真则为1,假则为0。

printf("%d",value);//每次输出整数的二进制形式的一个数字,从开头开始输出。.
temp--;//按位右移循环,直到把整数内存中所有的位移完毕。从内存中二进制形式的第一位开始。

}

Ⅳ C语言中怎么输出数据的二进制

二进制数不能像十进制那样%d直接输出。

如果想输出一个数的二进制可以通过函数把其转成2进制字符串再将其输出。

itoa函数

原型:char*itoa(intvalue,char*string,intradix);

参数:int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等

功能:将任意类型的数字转换为字符串。在<stdlib.h>中与之有相反功能的函数是atoi。

参考代码:

1、

#include<stdlib.h>
#include<stdio.h>
intmain(void)
{
intnumber=10;
charstring[25];
itoa(number,string,2);
printf("十进制数:%d,二进制数:%s ",number,string);
return0;
}
/*
十进制数:10,二进制数:1010
*/

2、

voidprint_bin(intn)
{
intl=sizeof(n)*8;//总位数。
inti;
if(i==0)
{
printf("0");
return;
}
for(i=l-1;i>=0;i--)//略去高位0.
{
if(n&(1<<i))break;
}

for(;i>=0;i--)
printf("%d",(n&(1<<i))!=0);
}

Ⅳ c语言以二进制输出

#include<stdlib.h>
#include<stdio.h>
voidmain(){
intnumber=43;charstring[100];
itoa(number,string,2);
printf("原数=%d二进制数=%s ",number,string);
}

这个可以满足你吗?让程序输出反码补码好像要求有点高。你根据我写的程序自己算一下反码补码并不是一件很难的事。

Ⅵ 在C语言中怎么把一个数转换成二进制然后输出

数据在内存中本来就是以二进制补码存放的,设法从高字节至低字节一个bit一个bit地输出到屏幕上即可。根据题面要求,输出过程还要做以下工作:
从最高字节开始检测,全0的字节略去;
每8位增加输出一个空格。
代码如下:
12345678910111213141516//#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"int main(void){ char *p; unsigned i,n,x=1<<sizeof(int)*8-1; printf("Input an integer...\n"); scanf("%d",&n); for(p=(char *)&n,i=sizeof(int)-1;i>0;i--) if(*(p+i)==0) x>>=8; else break; for(i=0;x;x>>=1) printf(++i%8 ? "%d" : "%d ",(n&x) || 0); printf("\n"); return 0;}

Ⅶ 将用户输入字符串转化2进制并输出(c语言)

不知道你说的是针对数字的转换成2进制还是说所有的字符串转成2进制,以下代码针对所有的字符串:
#include
<stdio.h>
#include
<string.h>
#include
<stdlib.h>
int
main(int
argc,
char
*
argv[])
{
char
input[1024];
scanf("%s",
input);
char
c;
int
len
=
strlen(input);
char
*
output
=
new
char[len
*
8
+
1];
memset(output,
(int)'0',
len
*
8
+
1);
char
tempBuff[9];
for(int
i
=
0;
i
<
1024;
i++)
{
c
=
input[i];
if(c
==
0)
break;
itoa((int)c,
tempBuff,
2);
strcpy(output
+
(i
*
8)
+
(8
-
strlen(tempBuff)),
tempBuff);
output[(i
+
1)
*
8]
=
'0';
}
output[len
*
8]
=
0;
printf(output);
delete
[]
output;
return
0;
}
如果是做数字的转换,参考一下,为经测试:
#include
<stdio.h>
#inlcude
<stdlib.h>
int
main()
{
int
n;
scanf("%d",
&n);
char
temp[1024];
atoi(n,
temp,
2);
printf(temp);
return
0;
}

Ⅷ 如何在c语言中输出二进制数

二进制是不可以直接输出的,但是可以用程序输出
#include<stdio.h>
void
f(int
n)
{
if(n)
f(n/2);
else
return;
printf("%d",n%2);
}
int
main()
{
int
n;
while(1)
{
scanf("%d",&n);
if(n<0)
break;
if(n==0)
printf("0");
f(n);
printf("\n");
}
return
0;
}

Ⅸ 怎么用c语言输出二进制码

在C语言的标准输出中,有16进制,10进制和8进制的输出格式,但是没有二进制的输出格式。所以要想输出二进制,只能靠自己写函数进行输出了。

基本思想为通过移位操作+与操作取出各个位上的值,然后对其进行输出即可。

以32位无符号整型数据二进制输出为例,代码如下:

#include<stdio.h>
voidbinary_print(unsignedintv)
{
inti;
intbit;
intsize=sizeof(v)*8;
//这里的size是输入参数v的位数,直接用32代替也可以,但写成sizeof(v)*8这样更为通用。
for(i=0;i<size;i++)
{
bit=v&(1<<(size-i-1));//提取出第i位的值
if(bit==0)putchar('0');
elseputchar('1');
}
}

Ⅹ 将任意两个十进制数转换为二进制数并输出的C语言代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>//itoa所需头文件
int
main()
{
char
str1[20],str2[20];
int
n,m;
scanf("%d%d",&n,&m);//n,m为0或正整数
itoa(n,str1,2);//itoa的第三个参数用于将数字转换成不同的进制,这边是二进制
itoa(m,str2,2);//将结果以字符形式存放在字符数组str1/str2中
printf("%s
%s\n",str1,str2);//直接输出
return
0
;
}