位、字节、字、字符集、字符编码。

字节


(Byte 发音:/‘bait/):。数据存储是以“字节”(Byte)为单位,数据传输是以“位”(bit)为单位,一个位就代表一个0或1,每8个位(bit)组成一个字节(Byte)。8bit=1Byte 注意1b不等于1B


计算机中,一串数码作为一个整体来处理或运算的,称为一个计算机字,简称字。字通常分为若干个字节(每个字节一般是8位)。在存储器中,通常每个单元存储一个字,因此每个字都是可以寻址的。字的长度用位数来表示

计算机运算器控制器中,通常都是以字为单位进行传送的。字出现在不同的地址其含义是不相同。例如,送往控制器去的字是指令,而送往运算器去的字就是一个数。

字长

计算机的每个字所包含的位数称为 字长。根据 计算机的不同, 字长有固定的和可变的两种。固定字长,即字长度不论什么情况都是固定不变的;可变字长,则在一定范围内,其长度是可变的。
计算的 字长是指它一次可处理的 二进制数字的数目。 计算机处理数据的速率,自然和它一次能加工的位数以及进行运算的快慢有关。如果一台 计算机的字长是另一台计算机的两倍,即使两台计算机的速度相同,在相同的时间内,前者能做的工作是后者的两倍。
一般地,大型 计算机的字长为32― 64位小型计算机为12―32位,而 微型计算机为4一16位。 字长是衡量 计算机性能的一个重要因素。

字节

字节是指一小组相邻的 二进制数码。通常是8位作为一个字节。它是构成信息的一个小单位,并作为一个整体来参加操作,比字小,是构成字的单位。
微型计算机中,通常用多少字节来表示 存储器的存储容量。
例如,在C++的 数据类型表示中,通常 char为1个字节, int为4个字节, double为8个字节。
理解编码的关键,是要把 字符的概念和字节的概念理解准确。这两个概念容易混淆,我们在此做一下区分:
概念描述 举例
字符 人们使用的记号,抽象意义上的一个符号。 '1', '中', 'a', '$', '¥' ……
字节  计算机中存储数据的单元,一个8位的 二进制数,是一个很具体的 存储空间。0x01, 0x45, 0xFA……

字符串

内存中,如果“ 字符”是以 ANSI编码形式存在的,一个字符可能使用一个字节或多个字节来表示,那么我们称这种字符串为  ANSI 字符串或者多字节字符串。如,"中文123" (占8字节,包括一个隐藏的\0)。

字符集和代码页

对于ANSI编码方式,存在不同的 字符集(Charset)。同样的字节序列,在不同的 字符集下表示的字符不一样。要正确解析一个ANSI 字符串,还要选择正确的 字符集,否则就可能导致所谓的 乱码现象。不同语言版本的 操作系统,都有一个默认的 字符集。在不指定 字符集的情况下,系统会使用此字符集来解析 ANSI 字符串。也就是说,如果我们在简体中文版的Windows下打开了一个由日文 操作系统保存的 ANSI 文本文件(仅包含 ANSI  字符串的文本文件),我们看到的将是 乱码。但是,如果我们使用 Visual Studio之类的带编码选择的 文本编辑器打开此文件,并且选择正确的 字符集,我们将可以看到它的原貌。注意:简体中文 字符集中的繁体字和 繁体中文字符集中的繁体字,编码不一定相同(事实证明,似乎是完全不同)。
每个 字符集都有一个唯一的编号,称为 代码页(Code Page)。简体中文(GB2312)的代码页为936,而系统默认 字符集的代码页为0,它表示根据系统的语言设置来选择一个合适的字符集。

UNICODE

字符串 在 内存中,如果“字符”是以在Unicode中的序号存在的,那么我们称这种字符串为Unicode字符串或者宽字节字符串。在Unicode中,每个 字符都占两个字节。如,"中文123"(占10字节)。
Unicode和ANSI的区别就相当于 输入法内的“ 全角”和“ 半角”的区别。
由于不同 ANSI 编码所规定的标准是不相同的( 字符集不同),因此,对于一个给定的多字节字符串,我们必须知道它采用的是哪一种字符集则,才能够知道它包含了哪些“字符”。而对于 UNICODE  字符串来说,不管在什么环境下,它所代表的“字符”内容总是不变的。Unicode 有着统一的标准,它定义了世界上绝大多数的 字符的编码,使得拉丁文、数字、简体中文、繁体中文、日文等都能以同一种编码方式保存。
Unicode当然是一个很大的集合,现在的规模可以容纳100多万个符号。每个符号的编码都不一样,比如,U+0639表示阿拉伯字母Ain,U+0041表示英语的大写字母A,“汉”这个字的Unicode编码是U+6C49。
Unicode固然统一了编码方式,但是它的效率不高,比如UCS-4(Unicode的标准之一)规定用4个字节存储一个符号,那么每个英文字母前都必然有三个字节是0,这对存储和传输来说都很耗资源。

1、编码方法

Unicode 标准始终使用十六进制数字,而且在书写时在前面加上前缀“U+”,例如字母“A”的编码为 004116 和字符“?”的编码为 20AC16。所以“A”的编码书写为“U+0041”。

UTF-8

UTF-8 是Unicode的其中一个使用方式。 UTF是 Unicode Translation Format,即把Unicode转做某种格式的意思
UTF-8便于不同的计算机之间使用 网络传输 不同语言和编码的文字,使得双 字节 的Unicode能够在现存的处理单字节的系统上正确传输。
为了提高Unicode的编码效率,于是就出现了UTF-8编码。UTF-8可以根据不同的符号自动选择编码的长短。比如英文字母可以只用1个 字节就够了。
UTF-8的编码是这样得出来的,以”汉”这个字为例:
“汉”字的Unicode编码是U+00006C49,然后把U+00006C49通过UTF-8编码器进行编码,最后输出的UTF-8编码是E6B189。
UTF-8使用可变长度 字节 来储存 Unicode字符,例如ASCII字母继续使用1字节储存,重音文字、希腊字母或 西里尔字母 等使用2字节来储存,而常用的汉字就要使用3字节。 辅助平面 字符则使用4 字节

UTF-16 和 UTF-32 编码

UTF-32、 UTF-16 和 UTF-8 是 Unicode 标准的编码字符集的 字符编码方案,UTF-16 使用一个或两个未分配的 16 位代码单元的序列对 Unicode 代码点进行编码;UTF-32 即将每一个 Unicode 代码点表示为相同值的 32 位整数

字符编码

计算机中的信息包括数据信息和控制信息,数据信息又可分为数值和非数值信息。非数值信息和控制信息包括了字母、各种控制符号、图形符号等,它们都以二进制编码方式存入计算机并得以处理,这种对字母和符号进行编码的 二进制代码 称为字符代码(Character Code)。计算机中常用的字符编码有ASCII码( 美国标准信息交换码 )和EBCDIC码(扩展的BCD交换码)。

字符集

字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值