C语言:输入一个十进制转换成二进制输出
答案:2 悬赏:60
解决时间 2021-10-19 02:06
- 提问者网友:不要迷恋哥
- 2021-10-18 04:39
C语言:输入一个十进制转换成二进制输出
最佳答案
- 二级知识专家网友:鸠书
- 2021-10-18 05:45
程序的主要思想是:
按位与的特点是,是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。
也就是说,按位与运算有3个对象,分别是两个参与运算的两个数和运算有的结果。这个和小学学习的普通加法一样。如:a+b=c,,a,b,c分别是3个对象。同样的,与运算也是一一样的意思:a & b = c.
只不过是与的意思和加法的意思不一样而已。
根据题目要求,我们已经得到了一个参与运算的数据,就是要转换的数,现在我们需要得到转换后的数,根据与运算规则,我们构造一个数,分别和待转换的数进行与运算,得到每一位的值,要么是0,要么是1。
程序如下:
#include <stdio.h>
int main(void)
{
const int iTimes=sizeof(int) * 8;
int iMask=1;
int x = 12345; //这个就是要转换的数
int x2[iTimes];
int i;
for( i=0 ; i<iTimes ; i++ ){
x2[i]=x & iMask;
iMask = iMask << 1;
// printf("%d",iMask);
}
printf("\n(%d)d=",x);
for( i=iTimes -1 ; i >=0 ; i-- ){
printf("%d",x2[i] ? 1 : 0 );
}
return 0;
}
按位与的特点是,是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。
也就是说,按位与运算有3个对象,分别是两个参与运算的两个数和运算有的结果。这个和小学学习的普通加法一样。如:a+b=c,,a,b,c分别是3个对象。同样的,与运算也是一一样的意思:a & b = c.
只不过是与的意思和加法的意思不一样而已。
根据题目要求,我们已经得到了一个参与运算的数据,就是要转换的数,现在我们需要得到转换后的数,根据与运算规则,我们构造一个数,分别和待转换的数进行与运算,得到每一位的值,要么是0,要么是1。
程序如下:
#include <stdio.h>
int main(void)
{
const int iTimes=sizeof(int) * 8;
int iMask=1;
int x = 12345; //这个就是要转换的数
int x2[iTimes];
int i;
for( i=0 ; i<iTimes ; i++ ){
x2[i]=x & iMask;
iMask = iMask << 1;
// printf("%d",iMask);
}
printf("\n(%d)d=",x);
for( i=iTimes -1 ; i >=0 ; i-- ){
printf("%d",x2[i] ? 1 : 0 );
}
return 0;
}
全部回答
- 1楼网友:长青诗
- 2021-10-18 05:55
用这么麻烦吗?直接用函数转化一下就可以了
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯