C语言十进制转八进制、十六进制以及十六进制转十进制、八进制

以下程序的输出结果是
main(){

int a=20;

printf("%d,%o,%x\n",a,a,a);

}
看到这个题目首先我们要明白%o 和 %x代表的是什么意思

%o代表的是输出该数字的八进制

%x代表的是输出该数字的十六进制

1.题目给出了 a=20这个十进制现在我们需要用十进制转八进制,这里我们采用的就是直接除8取余的方法

2.同理对于10进制转16进制我们也是采取除16取余的方法

3.相反,如果我们有一个十六进制那么怎么转成十进制、八进制呢?请看下面解释

(1)十六进制转十进制

16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……

例:2AF5换算成10进制:

用竖式计算:

第0位: 5 * 16^0 = 5

第1位: F * 16^1 = 240

第2位: A * 16^2= 2560

第3位: 2 * 16^3 = 8192

直接计算就是:

5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997

(2)十六进制转二进制

由于在二进制的表示方法中,每四位所表示的数的最大值对应16进制的15,即16进制每一位上最大值,所以,我们可以得出简便的转换方法,将16进制上每一位分别对应二进制上四位进行转换,即得所求:

例:2AF5换算成2进制:

第0位: (5)16 = (0101) 2

第1位: (F)16 = (1111) 2

第2位: (A) 16 = (1010) 2

第3位: (2) 16 = (0010) 2

得:(2AF5)16=(0010.1010.1111.0101)2

(3)十六进制转八进制

先将十六进制转为二进制,再将二进制转为八进制

发布了196 篇原创文章 · 获赞 581 · 访问量 47万+

猜你喜欢

转载自blog.csdn.net/wyf2017/article/details/104882436