C语言中的进制转换

十进制转换为其他进制

一、十进制转换为二进制

将十进制数除以2,除下来的余数(有1、0两种余数)写在后,商写在下并继续除以2;当最后不能再除以2时(即商为1),从底向上将余数连起来就是该十进制对应的二进制数。

两个例子:

C语言中的进制转换_第1张图片

176       10110000  

192       11000000

224       11100000

152       100 11 000

189       1011 1101

247      1111 0111

239      1110 1111

180      1011 0100

二、十进制转换为八进制

将十进制数除以8,除下来的余数(有0、1、2、3、4、5、6、7八种余数)写在后,商写在下并继续除以8;当最后不能再除以8时(即商为1、2、3、4、5、6或7这些比8小的数字),从底向上将余数连起来就是该十进制对应的八进制数。

几个例子:

  C语言中的进制转换_第2张图片

三、十进制转换为十六进制

将十进制数除以16,除下来的余数(有0、1、2、3、4、5、6、7、8、9、10即A、11即B、12即C、13即D、14即E、15即F十六种余数)写在后,商写在下并继续除以16;当最后不能再除以16时(即商为1、2、3、4、5、6、7、8、9、10、11、12、13、14或15这些比16小的数字),从底向上将余数连起来就是该十进制对应的十六进制数,注意将10,11,12,13,14,15写成对应的大写字母。

两个例子:

C语言中的进制转换_第3张图片

二进制,八进制和十六进制转换为十进制

这个我举个例子你就明白了。。。。。。O(∩_∩)O哈哈~注意数字间的颜色对应。

一个进制数10011101:

100111012=1×27+0×26+0×25+1×24+1×23+1×22+0×21+1×20

一个进制数5432657:

54326578=5×86+4×85+3×84+2×83+6×82+5×81+7×80

一个十六进制数B42C9:

B42C916=B×164+4×163+2×162+C×161+9×160

其实我已经把所有进制之间的转换讲完了。。。。。。

为什么呢?因为——

C语言中的进制转换_第4张图片

二进制转换为八进制或十六进制

一、二进制转换为八进制

因为8=23,所以三位二进制数对应一位八进制数。

举例:(11010111001101)2,因为三位二进制数对应一位八进制数,所以我们把二进制数从后往前三个三个得分开,11·010·111·001·101,可是最前面的11不足三位,我们就在前面补个0,就成了011·010·111·001·101,然后三位三位得化成十进制数:(11010111001101)2=(32715)8

C语言中的进制转换_第5张图片

二、二进制转换为十六进制

因为16=24,所以四位二进制数对应一位十六进制数。

举例:(11010111001101)2,因为四位二进制数对应一位十六进制数,所以我们把二进制数从后往前四个四个得分开,11·0101·1100·1101,可是最前面的11不足四位,我们就在前面补两个0,就成了0011·0101·1100·1101,然后四位四位得化成十进制数:(11010111001101)2=(35CD)16

C语言中的进制转换_第6张图片

八进制或十六进制转换为二进制

八进制或十六进制转换为二进制其实就是二进制转换为八进制或十六进制的反过程。

一、(32715)8=(11010111001101)2

把八进制数的每一个数字化成位二进制数,不足三位在前面补0。

C语言中的进制转换_第7张图片

二、(35CD)16=(11010111001101)2

把十六进制数的每一个数字化成位二进制数,不足四位在前面补0。

C语言中的进制转换_第8张图片

                                                     八进制和十六进制的转换就用二进制作为桥梁

你可能感兴趣的:(c语言)