美文网首页
编码、内存

编码、内存

作者: 草鞋弟 | 来源:发表于2017-04-21 19:59 被阅读0次

计算机编码的前世今生

我们都知道,计算机只能处理0和1这两种数字(实质应该是计算机硬件感应电流高低电平的变化,高电平为1,低电平为0),那么对于计算机而言,我们通过文本编辑器编辑而成的代码(实质是文本),计算机是无法识别的,计算机只能够识别01001001.....这样二进制编码集,那么我们的代码如何能够让计算机识别了?这个时候就需要编码的转换。

ASCII码

最初的计算机设计为8位(bit)一个字节(byte),因此一个字节能够表示的最大整数为255(二进制11111111为十进制255),两个字节所能表示的最大整数为65535,以此类推。

为了解决文本转换为数字(0和1)的问题,美国人发明了ASCII码,收录了128个字符,该表将每个字符对应一个数值,这样就将文本转换为了计算机可以识别的数字。

GB2312码(国标码)

ASCII码只适用于英文的编码情况,中文、韩文、日文等等其他语言的各种字符都未有收录,各国为解决这种问题,纷纷发明自己的编码表,中国发明的对应编码表为GB2312码,GB2312码在计算机中存储以其区位码为基础,其中汉字的区码和位码分别占一个存储单元,每个汉字即占了两个存储单元,因此理论上可以收录256*256即65536个汉字字符,基本上满足了中文的常用需要。

但是依然存在的一个问题是,老外浏览中文页面时,由于其浏览器不支持GB2312编码,那么他所看到的页面是乱码的,同理,中国人看韩国人,日本人这些同样有一套自己编码系统的浏览器时,同样页面是乱码的。

GBK

GBK为汉字内码拓展规范,英文全称是chinese internal Code Specification 。GBK编码是兼容GB2312编码,进一步的丰富的汉字的字库。

UNICODE

如上文所述,世界各国基本都有自己的一套编码表,你看我的,我看你的,互不支持,这样容易造成乱码的现象,为统一各国编码标准,出现了UNICODE码,UNICODE码用两个字节(16bits)基本编码了世界上所有的文字(字符)。

UNICODE码虽然统一了编码标准,但是编码效率不高,比如UCS-4(UNICODE的标准之一)规定了4个字节存储一个符号,那么对于 英文来说,它原本只需要1个字节就足够存储,但是现在用了高位三个字节补零,这是浪费内存。

UTF-8

本着节约的精神,出现了UTF-8编码(8bit Unicode Transformation Format),这是一种针对Unicode编码的可变长编码,UTF-8根据字符不同来自动选择编码的长短,比如英文就只用一个字节,这种编码方式兼容了ASCII码编码方式的遗留问题。

内存的概念

计算机所有程序的运行都是在内存中中进行的,因此对计算机的整体性能有较大的影响,内存(Memory)也称为内存储器,其作用是暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。计算机在运行过程中,CPU会将需要运算的数据调到内存中进行运算,当运算结束后,CPU会将结果传送出来。

内存又称为主存,是CPU能够直接寻址的的存储空间,内存是相对于外存而言的,平时使用的程序储存在硬盘等外存中,使用将其调入内存中运行。

  • 物理存储器和地址空间
    物理存储器和存储地址空间是两个不同的概念。
    物理存储器是指实际存在的具体存储器芯片。
    而存储地址空间是指对存储器编码(编码地址)的范围,所谓编码是对每一个物理存储单元(1个byte)分配一个号码,通常称之为“编址”,分配一个号码给一个存储单元的目的是为了能够方便的找到它,完成数据的读写。
    物理存储地址与存储地址空间大小是不一定一致的。

相关文章

  • 编码、内存

    计算机编码的前世今生 我们都知道,计算机只能处理0和1这两种数字(实质应该是计算机硬件感应电流高低电平的变化,高电...

  • JavaWeb开发之编码格式

    编码格式 Java语言在内存当中默认使用的字符集 默认会用“Unicode”编码格式(字符集)来保存字符。 编码 ...

  • C语言高级进阶

    一、内存 存储数据的最小单元——bit 内存编址的最小单元——byte 内存是线性的 二、补码 一种编码规则 补码...

  • Python编码问题

    乱码根源: 本地内存中编码方式都是“Unicode”,这是系统自动设定的! 而在本地硬盘(保存到文件中)编码方式,...

  • 【第6天】python全栈从入门到放弃

    1.编码 加载到内存里用的是unicode. 硬盘和网络传输用的是utf-8或者GBKencode() 编码. ...

  • DCL单例为什么要加Volatile

    拿一个对象创建赋值来说 上段代码转换成汇编码为: 从汇编码中可以看出,0行为对象开辟了一个内存空间,该内存的成员区...

  • Python字符串的使用

    1、编码问题 Python3里面字符串在内存中统一表现为Unicode编码ASCII编码:英文字母,数字,一些符号...

  • 内存泄露那些事

    在JavaScript中,由于编码者忽略或者不注意某些细节,经常会造成内存泄露。 首先,什么是内存泄漏?这是个什么...

  • 【每天来点python】字符串与编码

    学习地址:字符串与编码 编码讲的非常好,引用一下: 在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或...

  • Android性能优化总结

    本文大体分为四部分 内存优化 布局优化 编码优化 网络优化 内存优化 主要参考胡凯文章 首先说一下内存泄漏和OOM...

网友评论

      本文标题:编码、内存

      本文链接:https://www.haomeiwen.com/subject/thkkzttx.html