概述
c语言进制之间的转换
- 一、二进制八进制十六进制转十进制
- 二、十进制转换为二进制八进制十六进制
- 1 整数部分
- 2 小数部分
- 三、 二进制、八进制和十六进制的转换
- 1、二进制整数和八进制整数之间的转换
- 2、二进制整数和十六进制整数之间的转换
一、二进制八进制十六进制转十进制
二进制、八进制和十六进制向十进制转换遵循“按权相加”的方法。所谓“权”,也即“位权”
假设当前数字是 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 进制数的低位数字,后得到的余数作为 N 进制数的高位数字,依次排列起 来,就得到了 N 进制数字
例如:
234转换为二进制数的过程
234/2=117……0
117/2=58……1
58/2=29……0
29/2=14……1
14/2=7……0
7/2=3……1
3/2=1……1
1/2=0……1
结果为11101010
其他进制整数部分也是这样操作
2 小数部分
十进制小数转换成 N 进制小数采用“乘 N 取整,顺序排列”法。具体做法是
① 用 N 乘以十进制小数,可以得到一个积,这个积包含了整数部分和小数部分;
② 将积的整数部分取出,再用 N 乘以余下的小数部分,又得到一个新的积;
③再将积的整数部分取出,继续用 N 乘以余下的小数部分;
④ ……
⑤ 如此反复进行,每次都取出整数部分,用 N 接着乘以小数部分,直到积中的小数部分为 0,或者达到所要求 的精度为止。
⑥把取出的整数部分按顺序排列起来,先取出的整数作为 N 进制小数的高位数字,后取出的整数作为低位数字,这 样就得到了 N 进制小数
如把0.6875转换为二进制
0.68752=1.3750 取1
0.3752=0.750 取0
0.752=1.50 取1
0.52=1.0 取1
结果为0.1011
如果一个数字既包含了整数部分又包含了小数部分,那么将整数部分和小数部分开,分别按照上面的方法完成转换, 然后再合并在一起即可。
例如:
十进制数字 36926.930908203125 转换成八进制的结果为 110076.7345;
十进制数字 42.6875 转换成二进制的结果为 101010.1011
三、 二进制、八进制和十六进制的转换
1、二进制整数和八进制整数之间的转换
二进制整数转换为八进制整数时,每三位二进制数字转换为一位八进制数字,运算的顺序是从低位向高位依次进行, 高位不足三位用零补齐
2、二进制整数和十六进制整数之间的转换
二进制整数转换为十六进制整数时,每四位二进制数字转换为一位十六进制数字,运算的顺序是从低位向高位依次 进行,高位不足四位用零补齐
对应关系可参考
二进制、八进制和十六进制的整数转换一般够用,若有小数,也可先转换为十进制,再转换为对应进制
若有不足,请多担待
最后
以上就是火星上外套为你收集整理的c语言进制之间的转换一、二进制八进制十六进制转十进制二、十进制转换为二进制八进制十六进制三、 二进制、八进制和十六进制的转换的全部内容,希望文章能够帮你解决c语言进制之间的转换一、二进制八进制十六进制转十进制二、十进制转换为二进制八进制十六进制三、 二进制、八进制和十六进制的转换所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复