ASCII如何理解?

Posted KaKaKawhi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASCII如何理解?相关的知识,希望对你有一定的参考价值。


ASCII码如何理解?



前言

刚开始接触ASCII码学习的小白,经常会觉得数据的储存,尤其是字符的储存很难理解:

	char c = 'a';
	//char c = 0;
	//char c = 48;
	//char c = '0';
    printf("%d\\n", c);//以十进制整数形式打印
    printf("%c\\n", c);//以字符类型打印
    printf("%x\\n", c);//以十六进制整数形式打印

看到上述代码块,你可以清晰的回答各个输出的原理码?


一、ACSII码是什么?

ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。

在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示。

而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。使用 [0, 127] (7位二进制数)的一个数值来表示一个字符(英文字母,符号等),这样机会有一个一一对应的关系,那么这个就是我们的ASCII码表。


二、ACSII码表


三、ASCII结合数据储存的理解

  • 字符 ‘0’ 对应的ASCII码是 48 ,那么在内存里面,‘0’ 和 48 存放的都是 48对应的二进制
	char x = '0';
    char y = 48;//发生截断,仅保存最低8个比特位
    printf("%d\\n", x);//48
    printf("%c\\n", x);//0
    printf("%d\\n", y);//48
    printf("%c\\n", y);//0

🛑🛑🛑

借鉴大佬理解:
用数值给某个字符变量赋值时,相当赋与该数字相同码值所对应的字符;
用字符给某个字符变量赋值时,即赋字符本身。
原文:
https://blog.csdn.net/qnavy123/article/details/93901631

首先,我们要明确,我们存放数据到内存时,数据的类型仅仅起到开辟空间的大小问题,与起始放入的数据的类型无关,因为等号右边的数据在放入开辟的空间前已经转换为对应的二进制补码。

我们输出的时候,根据我们想要输出的类型,如果我们想要输出字符类型,就会输出该ASCII码对应的字符;如果我们想输出它的ASCII码,那就直接输出48。

    int x = '0';
    int y = 48;
    printf("%d\\n", x);//48
    printf("%c\\n", x);//0
    printf("%d\\n", y);//48
    printf("%c\\n", y);//0

与上同理。

总结

这里对文章进行总结:
以上就是今天总结的内容,本文仅仅简单介绍了ASCII码对我自身使用的一些困扰点。
真💙欢迎各位给予我更好的建议,欢迎访问!!!小编创作不易,觉得有用可以一键三连哦,感谢大家。peace
希望大家一起坚持学习,共同进步。梦想一旦被付诸行动,就会变得神圣。

欢迎各位大佬批评建议,分享更好的方法!!!🙊🙊🙊

以上是关于ASCII如何理解?的主要内容,如果未能解决你的问题,请参考以下文章

C,帮助我理解这个 ASCII 问题

金蝶handler中 collection 代码片段理解

切换片段时如何维护子视图的状态?

调用模板化成员函数:帮助我理解另一个 *** 帖子中的代码片段

精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解

Sleep() 方法后的代码片段没有被执行