二进制与十进制
1、十进制与二进制类比
abcd(10)=a*10^3+b*b*10^2+c*10^1+d*10^0;
abcd(2)=a*2^3+b*b*2^2+c*2^1+d*2^0;
十进制与二进制的区别:
二进制逢二进一,十进制逢十进一
二进制只能出现0,1两个数字,十进制能出现0~9十个数字
二进制各位的权重是2的幂,十进制是10的幂。
2、如何将一个整数分离其各位出来?例如如何将3541分为1,4,5,3?
我们知道1=3541%10,4=354%10; 5=35%10; 3=3%10;
而3541/10=354; 354/10=35; 35/10=3; 3/10=0;
所以对于一个整数来说,要分离各位方法就很简单了。
例如:输入一个n,按从低位到高位输出各位数字(例如:354->4,5,3)
实现:
cin>>n;
while(n)
{
cout<
n=n/10;
}
3、如何将一串单独的数字组成一个大数字(从低位到高位),例如1,2,3如何转化成321?
我们知道321=3*100+2*10+1*1;
其中3,2,1是通过输入实现的,而权值是有1变为10,然后10变为100,所以代码可以这样敲:
int s,k,n;
s=0;
k=1;
cin>>n;
for(int i=0; i
{
cin>>a;
s=s+a*k;
k=k*10;
}
4、如何将一串单独的数字组成一个大数字(从高位到低位),例如1,2,3如何转化成123?
因为abcd=a*10^3+b*10^2+c*10^1+d*10^0
=(a*10^2+b*10^1+c)*10+d
=(((0*10+a*10+b)*10+c)*10)+d
如果我们将结果保存在s中,那么我们可以得到一个关系式:
int s=0;
s=s*10+a;
s=s*10+b;
s=s*10+c;
s=s*10+d;
由此得到代码:
int a,n;
Int s=0;
cin>>n;
for(int i=0; i
{
cin>>a;
s=s*10+a;
}
如何将一个二进制数转化成十进制?
方法:abcd(2)=a*2^3+b*b*2^2+c*2^1+d*2^0;
如何将一个十进制数转化成二进制数?
答案是短除法
即除2取余,直到取整后的整数部分为0,然后从后到前取数字,使用合并整数的方法组成一个大整数即可。
本文来源:https://www.2haoxitong.net/k/doc/bbae9bf66bd97f192379e990.html
文档为doc格式