比特--字节--字符--编码


比特

  • 计算机专业术语,是信息量单位,是由英文BIT音译而来。
  • 二进制数系统中,每个0或1就是一个位(bit),位是数据存储的最小单位。
  • 二进制数的一位所包含的信息就是一比特,如二进制数0100就是4比特。
  • 计算机中的CPU位数指的是CPU一次能处理的最大位数。例如32位计算机的CPU一次最多能处理32位数据。
  • 比特就是 bit(可以简写为b),就是位,是数据存储的最小单位。</br>
  • bit=位=比特

字节

  • 字节是现代计算机中连续的、固定数量的比特(二进制):八个比特为一字节
  • 英文Byte翻译就是字节
  • 字节就是Byte(可以简写为B),一字节就等于(占)8比特,就等于(占)8位</br>
  • 1字节=8比特=8bit=8位

  • java中基本数据类型

类型|字节数|(二进位制)位数|最小|最大|默认|其他
--|--|--|--|--|--|--|--
byte|1|8|-128(-27)|127(27-1)|0|
short|2|16|-32768(-215)|32767(215-1)|0|
int|4|32|- 2,147,483,648(-231)|2,147,483,647(231 -1)|0|
long|8|64|-9,223,372,036,854,775,808(-2^63)|9,223,372,036,854,775,807 (2^63 -1)|0L|
float|4|32|||0.0f|
double|8|64|||0.0d|
boolean||1|||false|
char|2|16||||


字符与编码

  • ASCII码
    字符编码,统一规定了英语字符与二进制位之间的关系。
    ASCII码一共规定了128个字符的编码,比如空格"SPACE"是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。
  • Unicode
    Unicode涵盖了各个国家语言可能出现的符号和文字,并将为他们编号,比如,U+0639表示阿拉伯字母Ain,U+0041表示英语的大写字母A,U+4E25表示汉字"严"。
    Unicode只是一个编码字符集。
    Unicode只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。

字库表(character repertoire):一个相当于所有可读或者可显示字符的数据库,决定了整个字符集能够展现表示的所有字符的范围。
编码字符集(coded character set):用一个编码值code point来表示一个字符在字库中的位置。
字符编码(character encoding form):编码字符集和实际存储数值之间的转换关系。

Unicode是一个简单的标准,用来把字符映射到数字上(可以这样理解:选取一个具体的数字范围,然后将范围中的数字设置定义为码位,然后为每个码位编制一个文字符号,这样文字符号就和数字建立了一一对应的关系。Unicode就是制定了这样一种关系。而UTF-8实现,是指怎样将这个码位存储起来,是1个字节还是2个字节,还是多个字节)。Unicode协会的人会帮你处理所有幕后的问题,包括为新字符指定编码。Unicode并不告诉你字符是怎么编码成字节的。这是被编码方案决定的,通过UTF来指定。

  • UTF-8
    UTF-8是一种字符编码,是Unicode规则字库的一种实现形式(从UTF-8的全称8-bit Unicode Transformation Format可以辅助理解这一点,utf-16,utf-32都是Unicode规则字库的一种实现形式)。
    Unicode的编号从0000开始一直到10FFFF共分为17个Plane(016),每个Plane中有65536个字符。而UTF-8则只实现了第一个Plane,可见UTF-8虽然是一个当今接受度最广的字符集编码,但是它并没有涵盖整个Unicode的字库,这也造成了它在某些场景下对于特殊字符的处理困难~
  • UTF-8编码为变长编码。最小编码单位(code unit)为一个字节。一个字节的前1-3个bit为描述性部分,后面为实际序号部分。它可以使用1~6个字节表示一个符号(这句话可以参考维基百科的说明来理解),根据不同的符号而变化字节长度。
  • 对一个英文字母,在UTF-8编码方式下占用1个字节
  • 对一个数字,在UTF-8编码方式下占用1个字节
  • 对一个汉字而言,在UTF-8编码方式下2-4个字节(没有找到标准解答,一般为3到4个字节)
  • ISO-8859-1
    共能表示 256 个字符,占用1个字节
  • GB2312和GBK
    GB2312全称是《信息交换用汉字编码字符集 基本集》,总的编码范围是 A1-F7,其中从 A1-A9 是符号区,总共包含 682 个符号,从 B0-F7 是汉字区,包含 6763 个汉字。GBK全称叫《汉字内码扩展规范》,是国家技术监督局为 windows95 所制定的新的汉字内码规范,它的出现是为了扩展 GB2312,加入更多的汉字,它的编码范围是 8140~FEFE(去掉 XX7F)总共有 23940 个码位,它能表示 21003 个汉字,它的编码是和 GB2312 兼容的,也就是说用 GB2312 编码的汉字可以用 GBK 来解码,并且不会有乱码。
    对GB2312和GBK而言:
  • 对一个英文字母或者一个数字,占用1个字节
  • 对一个汉字而言,占用2个字节

为什么只会出现汉字乱码,英文字母和数字却不会:ASCII最先使用,其它的字符集都兼容ASCII

  • 内码和外码
    内码(internal encoding):程序内部使用的字符编码,特别是某种语言实现其char或String类型在内存里用的内部编码;
    外码(external encoding):程序与外部交互时外部使用的字符编码。“外部”相对“内部”而言;不是char或String在内存里用的内部编码的地方都可以认为是“外部”。例如,外部可以是序列化之后的char或String,或者外部的文件、命令行参数之类的。
    这里可以参考Java 字符串编码

更多参考

字符集和字符编码
编码研究笔记
学点编码知识又不会死:Unicode的流言终结者和编码大揭秘
十分钟搞清字符集和字符编码
UTF-8
The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
程序员趣味读物:谈谈Unicode编码
字符集编码与乱码文集

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,635评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,628评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,971评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,986评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,006评论 6 394
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,784评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,475评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,364评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,860评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,008评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,152评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,829评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,490评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,035评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,428评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,127评论 2 356

推荐阅读更多精彩内容

  • 0 前言 在平时的开发过程中大部分人应该都遇到过中文乱码问题,浏览网页时也会遇到内容显示乱码的情况,一般遇到这种情...
    小猪啊呜阅读 2,583评论 1 10
  • 原文在这里:各种字符集和编码详解 在软件的编码和实现中,我们可能会碰到个 一个比较头疼的问题--编码,不同字符间的...
    舌尖上的大胖阅读 1,795评论 0 2
  • 我不是他,没有从开始就陪在你身边,从不奢望,从不抱怨。 但我知道这个世界上有许多种等待,最好的那一种叫作来日可期...
    华百城阅读 623评论 0 1
  • 美国著名心理学家赛利格曼提出了一个幸福的公式:总幸福指数=先天的遗传素质+后天的环境+你能主动控制的心理力量 (H...
    半桶水命理探原阅读 350评论 0 1
  • 我不太喜歡聚會。當然,如果有好朋友我就會很享受。今天就參加了一個聚會,有些後悔,因為這個聚會我浪費了去沃爾瑪找臂包...
    猫晨lenka阅读 115评论 0 0