C语言进制转换

本文详细介绍了C语言中不同进制之间的转换方法,包括二进制、八进制、十进制和十六进制。通过取三、取四和取一拆三、取一拆四等方法,阐述了如何进行转换,并强调了转换过程中需要注意的细节,如补零和位权对应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.进制

        1.二进制:以0和1组成

        2.八进制:以数字0开头,由0~7八个数字组成

        3.十进制:由0,1,2,3, 4, 5, 6, 7, 8, 9十个基本数字组成

        4.十六进制:以0X或0x开头,由0~9,A~F或a~f 组成是十六进制

二.进制转换

        1.二进制转其他进制

                (1)转八进制

                        二进制数100101110进行取三和1法(从右至左),与8421进行一一对照

                        110进行8421对照后为6

                        101进行8421对照后为5

                        100进行8421对照后为4

                        然后从下往上进行排列

                        故转换为八进制数为:456

                  需要注意的是,在向左(或向右)取三位时,取到最高位(最低位)如果无法凑足三位,就可以在小数点的最左边(或最右边)补0,进行换算

                (2)转十进制

                        二进制数100101110进行从右向左的加法

                        0*2^0+1*2^1+1*2^2+1*2^3+0*2^4+1*2^5+0*2^6+0*2^7+1*2^8=302

                (3)转十六进制

                        二进制数100101110进行取四和1法(从右至左),与8421进行一一对照

                        1110进行8421对照后为14(十六进制中为e)

                        0010进行8421对照后为2

                        1(进行补0,0001)进行8421对照后为1

                        然后从下往上进行排列

                        故转换为八进制数为:12e

                  需要注意的是,在向左(或向右)取四位时,取到最高位(最低位)如果无法凑足四位,就可以在小数点的最左边(或最右边)补0,进行换算

2.八进制转其他进制

                (1)转二进制

                        八进制数456进行取1拆三法(从右至左),与8421进行一一对照

                        6进行8421对照后为110(0110)

                        5进行8421对照后为101(0101)

                        4进行8421对照后为100(0100)

                        然后从下往上进行排列

                        故转换为二进制数为:100101110

                (2)转十进制

                        八进制数456进行从右向左的加法

                        6*8^0+5*8^1+4*8^2=302

                (3)转十六进制(先转换为二进制,在转换为十六进制)

                        八进制数456进行取1拆4法(从右至左),与8421进行一一对照

                        6进行8421对照后为0110(十六进制中为e)

                        5进行8421对照后为0101

                        4进行8421对照后为0100

                        然后从下往上进行排列

                        故转换为二进制数为:100101110,然后再转换为十六进制(取四合一法)

                        最终转换为十六进制数为12e

3.十进制转其他进制

                (1)转二进制

                        十进制数302进行除2取余法

                        302/2=151,没有余数,为0

                        151/2=75余1,为1

                        75/2=37余1,为1

                        37/2=18余1,为1

                        18/2=9,没有余数,为0

                        9/2=4余1,为1

                        4/2=2,没有余数,为0

                        2/2=1,没有余数,为0

                        1/2=0余1,为1

                        从下往上进行排列

                        故转换为二进制数为:100101110

                (2)转八进制

                        十进制数302进行除8取余法

                        302/8=37余6,为6

                        37/8=4余5,为5

                        4/8=0余4,为4

                        然后从下往上进行排列

                        故转换为八进制数为:456

                (3)转十六进制

                        十进制数302进行除16取余法        

                        302/16=18余14,为14(也是e)

                        18/16=1余2,为2

                        1/16=0余1,为1

                        然后从下往上进行排列

                        转换为十六进制数为12e

4.十六进制转其他进制

                (1)转二进制

                        十六进制数12e进行取1拆4法

                       e也就是14,与8421进行对照为1110

                        2与8421进行对照为0010

                        1与8421进行对照为0001

                        从下往上进行排列

                        故转换为二进制数为:100101110

                (2)转八进制

                        十六进制数12e进行先转换为二进制,在转换为八进制

                        转二进制用取一拆四法,100101110

                       转八进制用取三合一法,456

                        然后从下往上进行排列

                        故转换为八进制数为:456

                (3)转十进制

                        十六进制数12e进行从右向左加法        

                        e=14=14*16^0=14

                        2*16^1=32

                        1*16^2=25 

                        25+14+32=302

                        然后从下往上进行排列

                        转换为十六进制数为302

三.总结

其他进制转为十进制时都为从右向左加法

十进制转为其他进制为除进制取余法

八进制与十六进制之间转换都需要先转换为二进制

二进制转换为八进制或十六进制时,为取三或四合1法

八进制或十六进制转换为二进制时,为取一拆三或四法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值