//帮我解释一下下面这个程序
希望大虾、高手们能编个比这个简单些的,谢谢啦!
#include"stdio.h"
main()
{int i,num,bit,sum=0,b=1,j;
unsigned mask=0x8000;
clrscr();
printf("please input a number:");
scanf("%d",&num);
printf("这个数用十进制表示:");
for (i=0;i<16;i++)
{ bit=(mask&num)?1:0;
if (bit==1)
{ b=1;
for (j=0;j<15-i;j++) b*=2;
sum=sum+b;
}
mask=mask>>1;
}
printf("\n%d",sum);
}
C 语言编程 实现二进制转十进制
答案:4 悬赏:0 手机版
解决时间 2021-04-12 00:51
- 提问者网友:难遇难求
- 2021-04-11 20:27
最佳答案
- 五星知识达人网友:迟山
- 2021-04-11 21:23
#include"stdio.h"
#include"string.h"
#include"math.h"
int main()
{
char a[100];
int i,j=0,k=0;
scanf("%s",a);
for(i=strlen(a)-1;i>=0;i--)
k+=pow(2,j++)*(a[i]-'0');
printf("%d\n",k);
}
#include"string.h"
#include"math.h"
int main()
{
char a[100];
int i,j=0,k=0;
scanf("%s",a);
for(i=strlen(a)-1;i>=0;i--)
k+=pow(2,j++)*(a[i]-'0');
printf("%d\n",k);
}
全部回答
- 1楼网友:低音帝王
- 2021-04-12 00:06
其实上面那个程序已经是简单的了,只是不易理解
我这个通俗一点,用的知识都很简单,看看能用不,我没编译
#include"stdio.h"
main()
{
int num;
int n=1;
int sum=0;
printf("please input a number:");
scanf("%d",&num);
printf("这个数用十进制表示:");
while(num!=0) //将2进制转换
{
sum=sum+n*num%10;
n=n*2;
num=num/10;
}
printf("\n%d",sum);
}
你自己看看能用不,主要就是那个while语句
- 2楼网友:酒者煙囻
- 2021-04-11 22:28
下面是我编的十进制转二进制程序,请参考,有运行附图
#include<stdio.h> main() {int i=0,x,a[20]; printf("please input a number\n"); scanf("%d",&x); do {a[i++]=x%2; x=x/2; }while(x!=0);
for(i=i-1;i>0;i--) printf("%d",a[i]); printf("\n"); }
- 3楼网友:煞尾
- 2021-04-11 21:57
clrscr();其实这句没必要,c语言在程序开始是屏幕就是空的,不必清屏
这段代码是用位运算实现进制转换的,速度比模拟快的多,但对于初学者来说有难度
下面是我的代码c++语言
#include<iostream>
using namespace std;
int cf(int a,int b)//这是算乘方的函数,返回的结果为a的b次方
{
int x=1;
for (i=1;i<=b;i++)
x*=a;
return x;
}
int main()
{
char a[100];//用字符数组存储这个数操作方便
int l,i,s=0,t;
scanf("%s",a);
l=strlen(a);//测量这个数的长度,即位数
for (i=0;i<l;i++)
{
t=a[i]-'0';//把字符类型的变量转换成整数类型
s+=t+cf(2,l-i-1);//依次累加
}
printf("%d\n",s);
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯