目录
二进制转化为十进制
二进制与十进制可以说是最常用的了,其中二进制又涉及位运算,因此尤为重要。
二进制手动转化为10进制在之前位运算中提到过,例如:二进制的10011转化为十进制就是19。即:
sum=1*2^4+0*2^3+0*2^2+1*2^1+1*2^0=19。
由于,int;long long;等等都是定义十进制整数的,因此其余进制均采用字符串的方式储存。
n进制转化为十进制
首先,我们得知道什么是进制,2进制就是逢2进一,十进制就是逢10进一,所以n进制就是逢n进一
比如5进制的10402。按照2进制的思路,手动转化为十进制就是
sum=1*5^4+0*5^3+4*5^2+0*5^1+2*5^0=727
因此我们可以发现,n进制与2进制计算方式一模一样
n(n>10)进转化为十进制
由于,n>10,而超过10的数,是用字母表示的,如10就是A,15就是F
所以进制转化大致思路还是这样,只不过呢,考虑字母就行
//将字符串存入数组
for(ll i=0;i<a.size();i++){
if(a[i]>'9') b[i]=a[i]-'A'+10;
else b[i]=a[i]-'0';
}
当a[i]>9,即为字母了。
别问为啥是-'A'+10(因为是我手动试出来的hh)
十进制转化为二进制
其实十进制转化为二进制,也就是二进制转化为十进制的逆运算而已
十进制转化为n进制
n进制和2进制一样,只是把2改成而已啦
十进制转化为n(n>10)进制
当n>10时候,就涉及字母了。同样,经过层层尝试得出
//c++
while(sum) {
if(sum%n<10) a+=sum%n+'0';
else a+=sum%n+'0'+7;
sum/=n;
}
//c语言
while(sum) {
if(sum%n<10) a[k++]=sum%n+'0';
else a[k++]=sum%n+'0'+7;
sum/=n;
}
也就这里不同,其余一模一样