while (n) {
arr[num] = n % d;
n = n / d;
num++;
}
//转化进制
取整取模由高位转低位
转十进制
原理就是满多少进多少
sum += arr[i] * pow(d, num - 1 - i);
明白了,实际上其实只有最终转为十进制才能这么写,原因就在于我们的加减乘除都是遵循十进制的
如29二进制就是11101,那么其实开始的第一个1本质上就是有2^4个2,进位而来的
也就是1*2^4,后面同理
什么进制,就遵循什么进位原则计算数据,最终全部相加就是十进制的结果就是因为运算时是遵循十进制的法则计算的。
这是运算时总结的规律,记住就好。不信可以随便定一个任意进制的数字最终转为十进制的结果都是这样。
1 1 1 1 1 //二进制转十进制
2^4 2^3 2^2 2^1 2^0 都是指2的个数
第一位2^4个2,第二位2^3个.........
把当前进制的数的每一位用当前进制提取出来,然后求和,求和这个操作就是化为十进制的步骤。
2^4+2^3+2^2+2^1+2^0=29
也就是求和:数位数字*进制^(n-1),n指当前的数位,减一即使因为一开始是^0开始