编写程序,输入一个十进制整数,将其变换为二进制后储存在一个字符数组中
初学,只学了putchar,getchar,printf,scanf,if语句,goto,while,do--whilefor,break,continue,语句,,,,...
初学,只学了putchar ,getchar ,printf ,scanf ,if 语句,goto ,while ,do --while
for ,break ,continue ,语句,,,,,,,请尽量用以上函数,多谢!!!!!!!!!! 展开
for ,break ,continue ,语句,,,,,,,请尽量用以上函数,多谢!!!!!!!!!! 展开
3个回答
展开全部
最方便和迅速的方法是利用位运算,因为数据在计算机内存中的存储方式本来就是二进制,通过简单的位运算就可以取出来了,如下:
#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;
}
#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;
}
展开全部
用fortran代码可能更简洁。下面是例子,输入值范围是0到2^63-1=4611686018427387904。一共四行代码。
character*64 h
read(*,*) m
write(h,'(b64)') m
end
character*64 h
read(*,*) m
write(h,'(b64)') m
end
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
呵呵,已经有答案了,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询