首页 > 其他分享 >[初识C语言]初识十进制、八进制以及十六进制之间的转换

[初识C语言]初识十进制、八进制以及十六进制之间的转换

时间:2024-10-24 20:16:35浏览次数:9  
标签:十六进制 转换 10 整数 初识 八进制 十进制

 

序言:

本文面对的对象是C语言的初学者,我将会以最简单的方式来让大家快速了解十进制、八进制以及十六进制之间的转换。

十进制的转换:

十进制转换为八进制:

首先我们学习:%oprintf 函数中用于输出一个整数的八进制表示的格式说明符

下面以十进制的整数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不是有效的八进制数字。 

!!因此,你需要确保你的代码中使用的是有效的八进制数字

如何做呢?

要正确设置八进制常量,你可以使用以下方法:

  1. 使用有效的八进制数字:确保你的八进制常量只包含0到7的数字。例如,如果你想表示十进制的16,你应该使用八进制的20。

  2. 在代码中转换:如果你有一个包含8或9的数字,并且你希望以八进制形式表示它,你可以先将它转换为十进制,然后再转换为八进制。例如,十进制的18转换为八进制是22。

  3. 使用字符串和格式化输出:如果你需要在代码中处理包含8或9的八进制数,你可以将它们存储为字符串,并在需要时使用printfscanf函数的格式化选项来处理它们。例如,你可以使用%o格式化选项来输出一个整数的八进制表示。

  4. 使用预处理指令:在C语言中,你可以使用预处理指令#define来定义一个宏,这样你就可以在代码中使用一个易于理解的名称来代替复杂的八进制数。

  5. 使用十六进制表示:如果你的数字大于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转换为八进制为例:

先前我们学习了:%oprintf 函数中用于输出一个整数的八进制表示的格式说明符 

所以在输出十六进制转换为八进制后的整数时,我们要使用%o ,如下:

#include<stdio.h>
int main()
{
	int a = 0x10;
	printf("%o\n", a);
	return 0;
}

输出结果:

因此 ,十六进制的10转换为八进制是整数20

解疑:十六进制中小写x和大写X的区别

在大多数编译器中,0x0X是等价的,但通常推荐使用小写的0x,因为它在编程中更为常见,且被广泛认为是标准的形式。

大写的X有时可能在某些上下文中用于强调或为了可读性,但两者在功能上是完全相同的。 

结语:

至此,我们对于十进制、八进制以及十六进制之间的转换的初步学习就结束啦!本文只是初识,简单了解其中的方法,至于其中深层次的原理,则需要大家另行了解啦!

谢谢大家的阅读,如本文有什么错误或解释不足的地方,欢迎大家在评论区指正!

标签:十六进制,转换,10,整数,初识,八进制,十进制
From: https://blog.csdn.net/2403_87046556/article/details/143216232

相关文章

  • 初识Maven2.2-maven的第一个项目
    简介:不通过idea编程工具。而是手动通过创建文件夹目录,来创建Maven的第一个项目用cmd命令窗口来进行clean、compile、test、install等操作前提:配置Maven的环境变量注意:下载Maven时,最好是下载到D盘的根目录下。路径越简单越好。不要带中文!跟配置jdk一样。要写一......
  • 初识封装
    1.理解:“高内聚,低耦合”高内聚即是说在内部繁琐的代码细节都由我们自己一人完成,包装起来,不让他人看见。而低耦合则是给用户一些较低的权限去使用软件。2.铭记:属性私有,get/set3.private:用于私有属性,与public形成反差,私有后的属性无法被随意调用。如图:4.get和set:在被私有了属性......
  • 初识Java GUI 编程
    文章目录前言一、什么是GUI编程?二、JavaGUI编程的基础组件1.JFrame2.JButton3.JLabel提示三、布局管理器结语前言在当今的软件开发领域,图形用户界面(GUI)的重要性不言而喻。它为用户提供了直观、友好的交互方式,使得软件更加易于使用和操作。在Java中,我们可以......
  • Qt编程技巧小知识点(3)十进制与十六进制数据转化
    文章目录Qt编程技巧小知识点(3)十进制与十六进制数据转化小结Qt编程技巧小知识点(3)十进制与十六进制数据转化  上下位机之间数据交互常需要将上位机的十进制发送到下位机,这时候常常涉及到数据进制的转化,这里以十进制与十六进制的数据转化为例,来简要阐述一下:首先,我们......
  • 第5节:初识数组
    5.初识数组1.数组的概念数组(Array)是C语言中用于存储相同类型数据的集合。数组中所有元素的类型相同,并且它们在内存中是连续存储的。数组的大小在定义时必须指定,并且一旦定义,大小就不能更改。数组的索引是从0开始的,也就是说,第一个元素的索引为0,第二个元素的索引为1,以此......
  • 【Spring篇】初识之Spring的入门程序及控制反转与依赖注入
         ......
  • 初识TS-类型多种操作
    类型推论在ts中,没有明确指出类型,ts的类型推论会帮助提供类型类型断言当ts类型太宽泛的时候,可以使用类型断言 as 指定更加具体的类型constalink:HTMLElement=document.getElementById('link')alink.link?//这种写法会报错,HTMLElement类型太宽泛了正确写法//常用写......
  • (八千字心得笔记)零基础C语言入门第一课——初识C语言
    这一课主要是让大家初步了解C语言,了解我们的开发环境,main函数,库函数,关键字,字符和字符串等内容的介绍,后面会一一讲解文章目录一.C语言是什么1.1C语言的历史二.开发环境编译型语言和解释型语言2.1编译和链接2.2编译器的选择2.2.1VS项目和源文件、头文件介绍2.2.2......
  • 初识js-cnblog
    初识jsjs的主要特点1.解释型,源代码不需要编译,而是直接运行在浏览器中被解释2.基于对象js是一种基于对象的语言,这意味着他能运用已经创建对象的作用3.事件驱动,js可以直接对用户或者客户做出响应,无需经过web程序,他对用户的响应是以事件驱动的方式进行的4.跨平台性5.安......
  • 实践(1)初识C语言,编写软件选择与入门代码
    1.1编译器选择。        现在能在市面上下载的编译器非常多,学习者用的最多的大概就是"VS"和"devc++"了。我使用的是从火绒应用商店下载的"EmbarcaderoDev-C++"的6.3版本。这款c语言编程软件功能齐全,安装包小,同样的辅助功能就相对"VS"会少很多,在使用上没也有vs那么方......