一、八进制由 0~7 八个数字组成,使用时必须以0开头(注意是数字 0,不是字母 o),例如:
//合法的八进制数
int a = 015 //换算成十进制为 13
int b = -0101 //换算成十进制为 -65
int c = 0177777 //换算成十进制为 65535
//非法的八进制
int m = 256 //无前缀 0,相当于十进制
int n = 03A2 //A不是有效的八进制数字
二、十六进制由数字 0~9、字母 A~F 或 a~f(不区分大小写)组成,使用时必须以0x或0X(不区分大小写)开头,例如:
//合法的十六进制int a = 0X2A //换算成十进制为 42
int b = -0XA0 //换算成十进制为 -160
int c = 0xffff //换算成十进制为 65535
//非法的十六进制
int m = 5A //没有前缀 0X,是一个无效数字
int n = 0X3H //H不是有效的十六进制数字
二进制化为八进制
整数部份从最低有效位开始,以3位一组,最高有效位不足3位时以0补齐,每一组均可转换成一个八进制的值,转换完毕就是八进制的整数。
小数部份从最高有效位开始,以3位一组,最低有效位不足3位时以0补齐,每一组均可转换成一个八进制的值,转换完毕就是八进制的小数。
例:(11001111.01111)2 = (011 001 111.011 110)2 = (317.36)8
以上内容参考:百度百科-八进制
C语言中常用的有十进制、二进制、八进制(用0表示)、十六进制(用0x表示)。十进制转二进制:
十进制转二进制采取除于2取余的方式。
将十进制数除于2得到商和余数,
将商继续除于2一直到商为0,
将得到的余数倒叙排列就是转换为二进制的结果
二进制转十进制:
从右向左用二进制位上的每一个数乘以2的相应次方
如二进制1010转换为十进制:
1010 = 0*(2的0次方)+1*(2的1次方)+0*(2的2次方)+1*(2的3次方) = 2 + 8 = 10
八进制转换为二进制
将二进制数自右向左每三位分为一段(若不足三位用0补齐),
然后将二进制的每三位转换为一位八进制数
如将二进制数0101010转换为八进制:
0 101 010不够三位的补0得到
000 101 010 = 052 = 0052(八进制用0表示)
十六进制转换为二进制
将二进制数自右向左每四位分为一段(若不足三位用0补齐),
然后将二进制的每4位转换为一位十六进制数
如将二进制数0101100转换为十六进制:
010 1100不够三位的补0得到
0010 1100 = 2C= 0x2C(十六进制用0x表示)
C语言只有十进制和十六进制。平常用的一般都是十进制,十六进制是以0x开头的,其他进制可以通过itoa函数很容易转换得到,头文件是stdlib.h,itoa有三个参数,第一个参数是十进制的数,第二个参数是用来存储转换后的内容,第三个参数就是想转换的进制类型,比如二进制就写2。在 C 语言程序中能接收的有二进制、八进制、十进制和十六进制。进制是一种计数机制,它可以使用有限的数字符号代表所有的数值。对于任何一种进制——X进制,就表示某一位置上的数运算时逢 X 进一位。实际生活中也有很多进制的应用场景。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)