c语言进制之间的转换
一、二进制八进制十六进制转十进制
二进制、八进制和十六进制向十进制转换遵循“按权相加”的方法。所谓“权”,也即“位权”
假设当前数字是 N 进制,那么:
对于整数部分,从右往左看,第 i 位的位权等Ni-1,
对于小数部分,恰好相反,要从左往右看,第 j 位的位权为N-j。
假设二进制数为100110,那么它转换为十进制的过程为:
1×25+0×24+0×23+1×22+1×21+0×20=38
八进制,十六进制的操作同样如此,只不过要把N的值改成8获16,然后再乘对应哪个位置上的数,求和即为要求的十进制数。
二、十进制转换为二进制八进制十六进制
1 整数部分
十进制整数转换为 N 进制整数采用“除 N 取余,逆序排列”法:
① 将 N 作为除数,用十进制整数除以 N,可以得到一个商和余数;
② 保留余数,用商继续除以 N,又得到一个新的商和余数;
③ 仍然保留余数,用商继续除以 N,还会得到一个新的商和余数;
④ ……
⑤ 如此反复进行,每次都保留余数,用商接着除以 N,直到商为 0 时为止。
⑥把先得到的余数作为 N 进制数的