序言:
本文面对的对象是C语言的初学者,我将会以最简单的方式来让大家快速了解十进制、八进制以及十六进制之间的转换。
十进制的转换:
十进制转换为八进制:
首先我们学习:%o
是 printf
函数中用于输出一个整数的八进制表示的格式说明符
下面以十进制的整数10转换为八进制的整数为例:
#include<stdio.h>
int main()
{
int a = 10;
printf("%o\n",a);
return 0;
}
由以上代码,我们将利用%o输出十进制中的整数10转换为八进制后的一个整数为12
十进制转换为十六进制:
在这里我们又会用到printf
函数的%X
格式化选项,它会将十进制的整数转换为大写的十六进制格式
下面又以十进制的整数10转换为十六进制的整数为例:
#include<stdio.h>
int main()
{
int a = 10;
printf("%X\n", a);
return 0;
}
由以上代码,我们将利用%X输出十进制中的整数10转换为十六进制后的一个整数为A,如下图:
如果你想要小写的十六进制格式,可以使用%x(小写)
int main()
{
int a = 10;
printf("%x\n", a);
return 0;
}
输出如下
解疑:1~9 的整数则会直接输出本身
到这里,如果是勇于尝试的小伙伴就会发现:十进制的10以及10以上的整数会根据转换规则转换为十六进制中所对应的整数;然而,十进制中1~9的整数则会直接输出本身,这是为什么呢?
原来,这是因为在任何数制中,1~9都表示数值本身,所以它们的表示在任何进制中都是其本身
由此,以下的转换我们均以10以及10以上的整数的转换为例
特殊0:
在任何数制中,0都表示没有数值,所以它的表示在任何进制中都是0
八进制的转换:
八进制转换为十进制:
我们仍以八进制中的10转换为十进制为例:
首先,我们要定义一个变量,并为其赋值八进制中的10;
而在这里,要表示其是八进制中的10则需要在所赋的值前面加上“0”,如下图
#include<stdio.h>
int main()
{
int a = 010;
printf("%d\n", a);
return 0;
}
现在,我们所看到的“010” 其实表示的就是八进制中的10,10以上的整数同理
而输出十进制的数则需要使用“%d”来输出
由此可得,八进制中的10转换为十进制则是整数8
八进制转换为十六进制:
这里其实也和十进制转换为十六进制同理,只是变量的性质不同
我们仍以八进制中的10转换为十六进制为例:
#include<stdio.h>
int main()
{
int a = 010;
printf("%X\n", a);
return 0;
}
输出结果:
所以,八进制中的10转换为十六进制为整数8
解疑:八进制带上8或9会报错
到这里,一些勇于尝试的小伙伴又会发现:如果将像“08”、“09”、“018”、“019”等这些带有8或9的值赋值给变量a时,编译器会报错。诶,这又是为什么呢?
原来啊,如果你想要设置八进制常量,你需要确保使用的是有效的八进制数字。八进制数只包含数字0到7,不包含8或9。因此,如果你想表示一个八进制数,你不能直接使用类似018这样的表示,因为这会导致编译器错误,因为8或9不是有效的八进制数字。
!!因此,你需要确保你的代码中使用的是有效的八进制数字
如何做呢?
要正确设置八进制常量,你可以使用以下方法:
-
使用有效的八进制数字:确保你的八进制常量只包含0到7的数字。例如,如果你想表示十进制的16,你应该使用八进制的20。
-
在代码中转换:如果你有一个包含8或9的数字,并且你希望以八进制形式表示它,你可以先将它转换为十进制,然后再转换为八进制。例如,十进制的18转换为八进制是22。
-
使用字符串和格式化输出:如果你需要在代码中处理包含8或9的八进制数,你可以将它们存储为字符串,并在需要时使用
printf
或scanf
函数的格式化选项来处理它们。例如,你可以使用%o
格式化选项来输出一个整数的八进制表示。 -
使用预处理指令:在C语言中,你可以使用预处理指令
#define
来定义一个宏,这样你就可以在代码中使用一个易于理解的名称来代替复杂的八进制数。 -
使用十六进制表示:如果你的数字大于7,并且你希望以八进制形式表示它,你可以使用十六进制表示,因为十六进制可以包含8和9(下面会讲到)
十六进制的转换:
十六进制转换为十进制:
我们仍以十六进制中的10转换为十进制为例:
和八进制转换为十进制一样,我们要先定义一个变量,并对其赋值,但赋值方式却有所不同
要表示其是十六进制中的10则需要在所赋的值前面加上“0x”,如下图
#include<stdio.h>
int main()
{
int a = 0x10;
printf("%d\n", a);
return 0;
}
现在,我们所看到的“0x10” 其实表示的就是十六进制中的10,10以上的整数同理
输出结果:
所以,十六进制中的10转换为十进制为整数16
十六进制转换为八进制:
我们仍以十六进制中的10转换为八进制为例:
先前我们学习了:%o
是 printf
函数中用于输出一个整数的八进制表示的格式说明符
所以在输出十六进制转换为八进制后的整数时,我们要使用%o ,如下:
#include<stdio.h>
int main()
{
int a = 0x10;
printf("%o\n", a);
return 0;
}
输出结果:
因此 ,十六进制的10转换为八进制是整数20
解疑:十六进制中小写x和大写X的区别
在大多数编译器中,0x
和0X
是等价的,但通常推荐使用小写的0x
,因为它在编程中更为常见,且被广泛认为是标准的形式。
大写的X
有时可能在某些上下文中用于强调或为了可读性,但两者在功能上是完全相同的。
结语:
至此,我们对于十进制、八进制以及十六进制之间的转换的初步学习就结束啦!本文只是初识,简单了解其中的方法,至于其中深层次的原理,则需要大家另行了解啦!
谢谢大家的阅读,如本文有什么错误或解释不足的地方,欢迎大家在评论区指正!
标签:十六进制,转换,10,整数,初识,八进制,十进制 From: https://blog.csdn.net/2403_87046556/article/details/143216232