C语言进制转换

十进制

C语言中最常用的进制是十进制,我们平时使用的数字表达方式就是十进制。十进制使用了0 1 2 3 4 5 6 7 8 9这些数字来表示,每个位置上的数字乘以相应的权重(10的幂次方)再求和就得到最终的数值。

例如:

1314=1X10的三次方+3X10的二次方+1X10的一次方+4X10的零次方

        =1X1000+3X100+1X10+4X1

       =1314

二进制

二进制是由0和1组成,以0b或者0B开头

八进制

八进制由0 1 2 3 4  5 6 7组成,以0开头

十六进制

十六进制由0 1 2 3 4 5  6 7 8 9 a    b   c    d   e   f   组成,以0x或者0X开头

                                                 10 11 12 13 14 15

二进制转换成十进制

二进制的每一位数字乘以该位的权重

其他进制转十进制也是如此

例如:

101011转换为十进制数的值为什么?

101011

=1X2的五次方+0X2的四次方+1X2的三次方+0X2的二次方+1X2的一次方+1X2的零次方

=1X32+0X16+1X8+0X4+1X2+1X1

=32+8+2+1

=43

十进制转二进制

十进制转二进制可以分为整数部分和小数部分的转换。

整数部分采用除2取余,逆序排列法,即将十进制数不断除以2,将余数倒序排列得到二进制数。

小数部分采用乘2取整,顺序排列法,即将小数不断乘以2,将积的整数部分顺序排列得到二进制数。例如,将0.25转为二进制数的过程是:0.25×2=0.5,取整数部分0;0.5×2=1,取整数部分1,所以0.25的二进制数为0.011

二进制转换为十六进制

16进制的每一位数字,各自写成二进制,最多有4个二进制位就足够了,所以在二进制转十六进制数的时候,每4个二进制位会换算一个16进制位,剩余不够4个二进制位的直接换算。

二进制转十六进制,取四合一法,即从二进制的小数点为分界点,向左(或向右)每四位取成一位。具体方法如下。


1、首先,先要看看十六位数的表示方法。

0  1  2  3   4   5   6   7   8    9       a     b    c    d  e   f

                                                    10  11  12 13  14 15

2、二进制数与十六进制数之间的对应关系表,如下:

1234567890

F
00010010001101000101011001111000100100001111
ABCDE
10101011110011011110


3、二进制转换成十六进制的方法是,取四合一法,即从二进制的小数点为分界点,向左(或向右)每四位取成一位。


4、组分好以后,对照二进制与十六进制数的对应表,将四位二进制按权相加,得到的数就是一位十六进制数,然后按顺序排列,小数点的位置不变,最后得到的就是十六进制数。


有小数点时,注意小数点的位置不变。
如果最后一组不满四位,对对应表不熟悉的可以加0补充。

16进制表示的时候前面加0x

例如:

二进制   1011 1001 1011,1001

十六进制  11       9        11,     9

十六进制   B        9         B ,       9

所以转换成的十六进制数是0xB9B,9

十六进制转二进制


将十六进制数的每一位转换为4位二进制数,再按原顺序组合起来就行。

例如,十六进制数F3,F等于二进制数1111,3等于二进制数11,补成4位,就是0011,组合在一起就是二进制数11110011。

另外,也可以将每一位十六进制数转换为对应的十进制数,再将十进制数转换为二进制数2。

二进制转换为八进制

 8进制的每一位数字,各自写成二进制,最多有3个二进制位就足够了,所以在二进制转八进制数的时候,每3个二进制位会换算一个8进制位,剩余不够3个二进制位的直接换算。

8进制表示的时候前面加0

例如:

二进制    01   101   011

 八进制     1      5       3         

所以转换为的八进制数是0153

八进制转换二进制


方法:取一分三法,即将一位八进制数分解成三位二进制数,用三位二进制按权相加去凑这位八进制数,小数点位置照旧。


例:将八进制的(327)O转换为二进制的步骤如下:
1. 3 = 011;
2. 2 = 010;
3. 7 = 111;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值