十进制
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、二进制数与十六进制数之间的对应关系表,如下:
1 2 3 4 5 6 7 8 9 0 F 0001 0010 0011 0100 0101 0110 0111 1000 1001 0000 1111
A B C D E 1010 1011 1100 1101 1110
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;