前言:

我们所处的世界充满了各种各样的字符,我们使用它们,用自己定义的方式来表示,交流。那么计算机内部是怎么样表示这些字符的呢?这个时候你满脑子都是电脑屏幕上的0 1 0 1对吧。是的,没错,由于硬件的原因,计算机使用01来表示我们世界的字符。但字符的种类如此之多,这其中的范式又是什么呢?

在我们走进01世界之前,我们先看看当下我们使用的字符编码,这其中不乏大家熟知的ascall码、utf-8等等。

字符编码
编码 提出时间 字符集大小 解释
ASCALL 1961年 128个字符(最初为8位,最高位为校验位) 可以表示数字、英文字符和一些字符

(ANSI)MBCS

由于ASCALL字符有限,每个国家语言不同,所以对ASCALL进行扩充,产生MBCS 对于不同国家来说,基本实现所有字符的覆盖 不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码,又称为"MBCS(Muilti-Bytes Character Set,多字节字符集)

GB2312

是ANSI的一种,针对我们国家发布的,也叫国标码 6763个常用汉字和682个全角的非汉字字符组成 采用94行94列的区位码进行编码
GBK GB 2312的出现,基本满足了汉字的计算机处理需要,但对于人名、古汉语等方面出现的罕用字,GB 2312不能处理,这导致了后来GBK及GB 18030汉字字符集的出现。 总计23940 个码位,共收入21886个汉字和图形符号,其中汉字(包括部首和构件)21003 个,图形符号883 个 有些汉字用五笔和拼音都打不出来,如:溙(五笔IDWI),须调出GBK字符集才能打出这个字

Big5

为统一繁体字符集编码,1984年,台湾五大厂商宏碁、神通、佳佳、零壹以及大众一同制定了一种繁体中文编码方案,因其来源被称为五大码,英文写作Big5,后来按英文翻译回汉字后,普遍被称为大五码

大五码是一种繁体中文汉字字符集,其中繁体汉字13053个,808个标点符号、希腊字母及特殊符号

目前,Big5编码在台湾、香港、澳门及其他海外华人中普遍使用,成为了繁体中文编码的事实标准。

Unicode

世界上存在着多种编码
方式,在ANSi编码下,同一个编码值,在不同的编码体系里代表着不同的。为了统一就诞生了Unicode
Unicode当然是一个很大的集合,现在的规模可以容纳100多万个符号 Unicode固然统一了编码方式,但是它的效率不高,比如UCS-4(Unicode的标准之一)规定用4个字节存储一个符号,那么每个英文字母前都必然有三个字节是0,这对存储和传输来说都很耗资源。
UTF-8 为了提高Unicode的编码效率,于是就出现了UTF-8编码。UTF-8可以根据不同的符号自动选择编码的长短。比如英文字母可以只用1个字节就够了。 和Unicode一样字符集

对Unicode的优化,可以包含世界上所有字符,字母占1个字节,汉字占3个字节;

UTF-8 是在互联网上使用最广的一种 Unicode 的实现方式。

UTF-8 是一种变长的编码方式。它可以使用 1-6 个字节表示一个符号,根据不同的符号而变化字节长度

Base64

有的电子邮件系统(比如国外信箱)不支持非英文字母(比如汉字)传输。
这是历史原因造成的,因为一个英文字母使用ASCII编码来存储,占存储器的1个字节(8位),实际上只用了7位2进制来存储,第一位并没有使用,设置为0,所以,这样的系统认为凡是第一位是1的字节都是错误的。而有的编码方案(比如GB2312)不但使用多个字节编码一个字符,并且第一位经常是1,于是邮件系统就把1换成0,这样收到邮件的人就会发现邮件乱码。
英文中文字符都可以 为了能让邮件系统正常的收发信件,就需要把由其他编码存储的符号转换成ASCII码来传输。比如,在一端发送GB2312编码->根据Base64规则->转换成ASCII码,接收端收到ASCII码->根据Base64规则->还原到GB2312编码

这些编码集都是外面平时使用的,不信你可以打开记事本,点击另存为的时候就可以选择字符集,当然就有上面我们提到的ANSI。而我们做javaee或者网页的时候,大都也采用utf-8,看了上面的介绍我们心里应该大致知道是为什么了吧。所以,乱码并不可怕,只要编码和解码的字符集一致就好,绝对不会出问题。

一、思维导图

我们可以看看关于我们世界所使用的文字的思维导入,接下来所展示的数字和文字表示方式会根据这个来进行。

二、谈谈数据的表示方式

大部人是知道计算机内部以01来存储我们的数据,也知道进制的转换,这里就根据上面的思维导图来简单说说我们的数据表示吧。

(1)数值类型

首先,大家最新认识的当然是十进制的数据(在没有学计算机之前,其它的进制数大都是在初高中数学里面知道的,但都不熟悉)。对于十进制数,我们在熟悉不过了,我们可以用二进制,八进制,十六进制来表示。例如十进制27就可以表示为十六进制的1B,二进制的0001 1010。那么聪明的你可能会问我,负数是怎么表示的呀?当然,我们用十进制是很好表示负数的,但是对计算机来说,却是一件头疼的事情。所以CS(Computer scientist)们就想出将二进制能够表示的数用一半的数表示正数,另一半的数表示负数的形式。例如8位二进制数,0~127这128个数字就表示正数,而128~255这128个数字就表示负数,但是约定它们表示-128~-1。所以就有了课堂上老师说计算机内部拥有符号位的说法,其本质就是这个。如果想要了解更过关于二进制补码的,可以跳转到我这篇博客:进制转换小技巧之让你重新认识二进制补码(大师,我悟了)!!!。所以对于数值我们就说清楚了对吧。

当然没有啦,因为我们小学所学的,除了整数,还有小数呢,这里小数又分为定点数和浮点数。但是你会问我,什么?小学不就是小数吗?上面的定点数和浮点数当然是我们计算机有关的定义啦。所谓的定点数就是约定机器中所有数据的小数点位置是固定不变的。由于约定在固定位置,小数点就不再使用记号“.”来表示了。所以定点数就是我们上面所说的纯整数还有纯小数。我们只需要最高位表示符号位,后面为尾数即可。

如果数X表示的是纯小数,那么小数点位于Xn和Xn-1之间;如果数X表示的是纯整数,那么小数点位于最低位X0的右边。

--------->

对于浮点数来说:把数的范围和精度分别表示的方法,相当于数的小数点位置随比例因子的不同而在一定范围内可以自由浮动,所以称为浮点数表示法。

任意的一个十进制数N可以写成N = 10^E.M;同样,任意二进制N可以写成N = 2^e.M。其中M称为浮点数的尾数,是一个纯小数。e是比例因子,称为指数,表示为整数,也称为阶码。而阶符合数符当然就是符号位啦。所以我们现在已经知道了定点数和浮点数在机器内的表达方式了。那么我们小时候所学的也并非只有数学,还有语文,还有各种各样的符号,它们是怎么在计算机中表示呢?

(2)字符和字符串

对于我们所学的ABCD,显然需要另一种方式来表达,于是我们就有了ASCALL码,美国人将英语字符和其它符号专门定义了一个统一的标准,用专门的数字对应符号,例如a的ASCALL码就是97,它对应的大写的A的ascall码就是65,为什么我会知道,你可能相差32,那是因为在二进制表达的时候大小写的差值就在于第5位二进制的符号相异。而表示字符串,我们既可以用ascall码,也可以用我们可以理解的方法(但这些方法大都不实用,因为计算机内部无法表示)。

由于ascall码能够表示的字符有限,所以后来我们就有了Unicode,万国码,超级齐全,之后的utf-8和utf-16也是以此为基准在计算机内部表示。

三、谈谈汉字的表示方式

那我们国家的汉字如何表示存储的呢?

存储汉字有很多种方法对吧,我们国家采用的数字编码其实就是国标区位码,也就是将国家标准局公布的6763个两级汉字分为94个区,每个区分94位,实际上就是一个二维的表格。例如“中”字就是第54区48位,区位码为5448。而它的机器内吗无非就是将5448转换为进制数(因为这里的5448是十进制数)。例如我们转换为16进制数为36 30,注意,这里54 48是两个数字,所以转换是分别转换。然后将它加上A0A0H,就得到它的机器内码的表示:D6D0。也就是说:汉字内码 = 区位码 + 0XA0X0H。

为什么是这样呢?那是因为,一个汉字要两个字节,为了让计算机识别出左边和右边一同联合表示一个汉字,最高位就为1,所以我们这么加也就是让最高位都为1啦。

四、展望:有没有更好的表示呢?

现在几乎所有的人类语言和字符都可以用计算机来表示了,我们做项目一件很重要的事情也就是统一字符编码,让编码和解码的字符一致,才不会出现乱码的情况。当然最常用的也就是utf-8啦。那么有没有比这更好更快的表达呢?让计算机更加的便捷呢?就看你们啦~

计算机内部是如何表示数字和文字的呢?相关推荐

  1. 使用计算机制作数字文本格式,计算机中数字、文字、图像、声音和视频的表示与编码...

    设计计算机的最初目的是进行数值计算,计算机中首先表示的数据就是各种数字信息.随着应用的发展,现在计算机数据以不同的形式出现,如:数字.文字.图像.声音和视频等.但是,在计算机内部,这些数据形式还是以数 ...

  2. 计算机系统的图形图像编码方式,只有将数字、文字、图像、声音和视频等不同类型的信息转换成_______代码,才便于计算机加工和处理。...

    只有将数字.文字.图像.声音和视频等不同类型的信息转换成_______代码,才便于计算机加工和处理.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容, ...

  3. 在网络中计算机接收的信号是,信息安全技术题库:在网络中,将语音与计算机产生的数字、文字、图形与图像同时传输,将语音信号数字化的技术是( )。 - 作业在线问答...

    相关题目与解析 在网络中,将语音与计算机产生的数字.文字.图形与图像同时传输,必须先将语音信号数字化.利用(51) 在网络中,将语音与计算机产生的数字.文字.图形与图像同时传输,将语音信号数字化的技术 ...

  4. 机器数与码制——如何在计算机内部存储数字、进行数据运算

    机器数 机器数 各种数据在计算机内部的表示和存储形式称为机器数. 特点: 采用二进制计数: 数的符号(正负)用"0.1"表示: 小数点隐含表示二不占位置. 机器数的真值 机器数所对 ...

  5. 计算机处理数据几进制,计算机内部运行和处理的数据是几进制

    计算机内部运行和处理的数据是几进制 计算机内部运行和处理的数据是二进制.原因:1.计算机是由逻辑电路组成,逻辑电路通常只有两个状态,开关的接通与断开,这两种状态正好可以用1和0表示:2.二进制中只使用 ...

  6. 计算机内部的信息交换通道称为,大一计算机考试练习题

    1. 在计算机内部一般设有数据总线.(地址)总线和控制总线. 2. 3. 4. 5. 一条指令包括操作数 和(操作码) 两部分. (时钟)频率是影响CPU性能的重要因素之一. 分立离散的信号称为(数字 ...

  7. 计算机内部使用什么方法技术,计算机内部使用什么技术

    计算机内部采用的是二进制编码.任何信息在计算机内都采用"0"和"1"的各种组合来表示.采用二进制的原因,一是二值器件物理上容易实现:二是在人类思维中," ...

  8. 详解计算机内部存储数据的形式 二进制数

    详解计算机内部存储数据的形式-二进制数 前言 要想对程序的运行机制形成一个大致印象,就要了解信息(数据)在计算机内部是以怎样的形式来表现的,又是以怎样的方法进行运算的.在 C 和 Java 等高级语言 ...

  9. 计算机内部信号表现形式,2021山西特岗教师招聘考试:信息技术学科基础考点归纳六...

    为了帮助考生更好的备战山西特岗教师招聘考试,临汾人事考试网整理了信息技术学科基础考点归纳,希望能对考生有所帮助!祝愿考生顺利考试,早日圆梦教师! 计算机通信有两种,一种是数字通信,另一种是模拟通信.数 ...

最新文章

  1. 美国发布《量子网络战略愿景》
  2. Layout of the output array img is incompatible with cv::Mat (step[ndims-1] !
  3. 清华大学计算机系71班张晨,“神仙打架”要来了!网友:又到了凡人围观的时刻...
  4. Lisp和前缀表示法入门
  5. 甘肃关于领取软考2021年上半年合格证书的通知
  6. “5G+AI”到底有啥用?这篇漫画告诉你答案…
  7. MySQL 中日志的面试题总结
  8. PreparedStatement中in子句的处理
  9. oracle数据设置为ull,Oracle _11g_使用手册_自备
  10. 详细教程Desktop Goose又在整什么幺鹅子呢?
  11. HG255D[OpenWrt]从入门到精通
  12. WIN7,WIN10,WIN11怎么查看电脑操作系统位数
  13. SAP中设置参数缺省值小技巧
  14. python公开直播课_今晚Python与人工智能直播课来袭,Mars喊你快上车
  15. Matlab运动模糊,维纳滤波
  16. 服务器加内存系统,服务器加内存的方法
  17. Vue密码验证:密码必须由大写字母、小写字母、数字、特殊符号中的2种及以上类型组成
  18. c语言输入学号查找成绩,C语言程序设计按学号查询成绩
  19. 前端高频面试题-场景题
  20. 高斯RBF核函数中Sigma取值和SVM分离面的影响

热门文章

  1. 廖雪峰讲python高阶函数求导_高阶函数 - 廖雪峰的Python2.7教程 - 广州尚鹏
  2. 2013年码农想象力训练之一
  3. 2021年安全员-B证(山东省-2021版)报名考试及安全员-B证(山东省-2021版)
  4. 漏洞分析——shellshock实验
  5. 137 下载口(64 pin)
  6. “+智能”时代,华为云的ToB基因能做些什么?
  7. 网站形象与网站定位对网站建设的重要性
  8. 阻旋式料位计EX-RT3M-D22属于西安昱鑫电气
  9. 多层感知机-印第安人糖尿病诊断-基于keras的python学习笔记(一)
  10. 【论文笔记】Attention-Based Two-Stream Convolutional Networks for Face Spoofing Detection