编写程序,输入一个十进制整数,将其变换为二进制后储存在一个字符数组中

初学,只学了putchar,getchar,printf,scanf,if语句,goto,while,do--whilefor,break,continue,语句,,,,... 初学,只学了putchar ,getchar ,printf ,scanf ,if 语句,goto ,while ,do --while
for ,break ,continue ,语句,,,,,,,请尽量用以上函数,多谢!!!!!!!!!!
展开
 我来答
kklots
2011-06-15 · TA获得超过628个赞
知道小有建树答主
回答量:389
采纳率:0%
帮助的人:355万
展开全部
最方便和迅速的方法是利用位运算,因为数据在计算机内存中的存储方式本来就是二进制,通过简单的位运算就可以取出来了,如下:

#include <stdio.h>

int main()
{
int a; //整型变量长度为4个字节,这个信息很关键
char s[32];
scanf("%d",&a);
for(int i = 0;i<32;i++)
{
s[31-i]= ((a>>i)&0x00000001)+ '0';//这一句是关键,通过位运算将数字的二
//进制表示向右移,再与二进制的1进行
//与运算,得到的结果与字符‘0’的ASCII
//码相加,就是该位置的二进制字符的
// char 表示了
}
for(int i =0 ;i<32;i++)
{
printf("%c",s[i]);
}
}

用普通的数学计算也可以,但是效率很低,不推荐,方法如下:

#include <stdio.h>

int main()
{
int a; //整型变量长度为4个字节,这个信息很关键
char s[32];
scanf("%d",&a);
for(int i = 0;i<32;i++)
{
s[31-i]=a%2+'0';//这两行是十进制到二进制
a=a/2; //的转变方法
}
for(int i =0 ;i<32;i++)
{
printf("%c",s[i]);
}
return 0;
}
帐号已注销
2021-04-17 · TA获得超过3110个赞
知道大有可为答主
回答量:4114
采纳率:0%
帮助的人:259万
展开全部
用fortran代码可能更简洁。下面是例子,输入值范围是0到2^63-1=4611686018427387904。一共四行代码。
character*64 h
read(*,*) m
write(h,'(b64)') m
end
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e026af6
2011-06-16 · TA获得超过447个赞
知道答主
回答量:107
采纳率:0%
帮助的人:49.1万
展开全部
呵呵,已经有答案了,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式