1、常用进制表现形式
二进制:以0b开头,一位二进制位只能存放0或1,C语言中无法直接输出二进制。
例:0b0111 1011
八进制:以0开头,一位八进制位能存放0~7,输出占位符是%o。
例:0173
十进制:一位十进制位能存放0~9,输出占位符是%hd、%hu、%d、%u、%ld、%lu、%f、%lf
例:123
十六进制:以0x开头,一位十六进制位能存放0~9 a~f,输出占位符是%x。其中 a代表10,b代表11,c代表12,d代表13,e代表14,f代表15
例:0x7B
int main()
{
//数据在计算机中都是按二进制存储,以下仅是同一个数据的不同输出形式
int data = 123;
//八进制输出,#的作用是按照八进制格式输出
printf("八进制输出:%#o\n",data);
//十进制输出
printf("十进制输出:%d\n",data);
//十六进制输出,#的作用是按照十六进制格式输出
printf("十六进制输出:%#x\n",data);
return 0;
}
2、进制间的转换
2.1 十进制 转 二进制、八进制、十六进制(短除法)
例1:123的二进制表达形式为0b0111 1011
例2:123的八进制表达形式0173
例3:123的十六进制表达形式0x7B
2.2 二进制、八进制、十六进制 转 十进制(位次幂)
例1:二进制数0b0111 1011的十进制数为123
例2:八进制数0173的十进制数为123
例3:十六进制0x7B的十进制数为123
2.3 二进制 转 八进制
八进制数据范围是 0~7 ,转换成二进制就是 000~111
从右往左,每3位二进制位可以转换成一位八进制位。
二进制的每一位从低到高所代表的数是8 4 2 1
例:二进制数0b0100 0011
拆分:01 000 011
八进制:1 0 3
二进制0b0100 0011的八进制是0103
2.4 八进制 转 二进制
每1位八进制对应3位二进制
二进制的每一位从低到高所代表的数是8 4 2 1
例:八进制 0123
转二进制 001 010 011
位数为8的倍数 0101 0011
八进制0123的二进制数是0b0101 0011
2.5 二进制 转 十六进制
十六进制数据范围是 0~9 a~f ,转换成二进制就是 0000~1111
从右往左,每4位二进制位可以转换成一位十六进制位。
二进制的每一位从低到高所代表的数是8 4 2 1
例:二进制数0b0101 1101
十六进制 5 D
二进制0b0101 1101转为十六进制数为0x5D
2.6 十六进制 转 二进制
每1位十六进制对应4位二进制
二进制的每一位从低到高所代表的数是8 4 2 1
例:十六进制 0x9C
转二进制 1001 1100
十六进制数0x9C的二进制数是0b1001 1100
2.7 八进制 转 十六进制
八进制---->二进制---->十六进制
2.8 十六进制 转 八进制
十六进制---->二进制---->八进制