必须知道的C语言知识细节:进制表示
C语言中表示数时经常提到二进制、八进制、十进制和十六进制表示。
为方便理解,先介绍十进制。
十进制:是指由0,1,2,3,4,5,6,7,8,9 十个数字表示的数,逢十进位,因此是十进制,可以看出十进制没有单独数字10,因为不需要,10可以用进1位表示。
同理:
二进制:是有0和1两个数字表示的数,逢2进位,所以二进制中不会出现2。
八进制:是指由0,1,2,3,4,5,6,7 八个数字表示的数,逢8进位。
十六进制:是指由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 十六个数字表示的数,其中英文字符(不区分大小写)A-F分别表示10-15。
C语言标准中,整数可以直接使用八进制、十进制、十六进制三种表示,二进制标准没有支持,但是部分编译器提供支持。
例如,对于自然数100,分别使用以上四种进制表示(tips:可以使用Windows自带的计算器-程序员模式作为工具,方便日常验算)
int i=100; // 十进制
int j=0144; // 八进制,首位必须是0表示
int k=0x64; // 十六进制表示,前缀必须是0x或0X
int m=0b01100100; // 二进制表示,前缀必须是0b或0B
注意:二进制表示,C标准未规定,部分编译器才能支持,不建议使用。
各种进制转换十进制数值:
十进制:
100= 110^2 + 010^1 + 0*10^0
其中102表示10的2次方,101表示10的1次方,以此类推。
八进制:
0144=18^2 + 48^1 + 4*8^0 = 100
十六进制:
0x64=616^1 + 416^0 = 100
二进制:
0b01100100= 02^7 + 12^6 +12^5 + 02^4 + 02^3 + 12^2 + 02^1 + 02^0
二进制和八进制、十六进制快速转换:
观察发现:每3个二进制数位可以转换成1个八进制数位,每4个二进制数位转换成1个十六进制数位。
例如:
二进制到八进制:
0b01100100 = 0b 01 100 100 = 144 = 0144 //加上前缀0
二进制到十六进制:
0b01100100 = 0b 0110 0100 = 64 = 0x64 // 加上前缀0x
其实做为一个学习者,有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个C/C++基础交流583650410,不管你是小白还是转行人士欢迎入驻,大家一起交流成长。