计算机常见编码

计算机常见编码

数字

无符号数

不表示符号位(默认表示正数),所有的数位都表示数值的一种表示方式

数值范围

1BYTE ——[0-255],256个数 —— 可以编码256种不同的状态 1111 1111 = 2^8

2BYTE ——[0-65535],65536个数 —— 可以编码65536种不同的状态 1111 1111 1111 1111 = 2^16

4BYTE ——[0-4294967295],43亿个数 —— 可以编码43亿种不同的状态 1111 1111 1111 1111 1111 1111 1111 1111 = 2^32

编码状态计算方法

如果是统计状态,根据二进制位数的个数来进行计算
计算方式 状态个数=2^(1的个数)
例如:1111 1111 状态的个数就是 2^8
扩展:二进制从低位右边往高位左边的权依次是:
2^0 2^1 2^2 2^3 2^4 2^5 2^6 2^7

有符号数

又称机器数,约定二进制位最高位表示符号位,其他位表示数值位
符号位0表示正数,符号位1表示负数
对有符号数,计算机中存储和使用它的补码形式
补码: 将减法转化为加法计算 a-b=a+(-b)

使用补码可以减少逻辑电路的种类,降低硬件的成本,提高计算机的稳定性

正数的原码 = 反码 = 补码

负数:

  1. 原码:按约定表示的符号数(最高位为1),即机器数
  2. 反码:符号位不变,其他位按位取反 - 0->1,1->0
  3. 补码:符号位保持不变,反码+1

一个数的补码转化为原码的方法与它的原码转换为补码的方法完全相同

真值 44D —— +010 1100B
真值 -44D —— -010 1100B

有符号数数值范围:

1B
原码:[-127,+127] —— [-(2^7-1),+ 2^7-1] 两个0——1000 0000 和 0000 0000都表示0
反码:[-127,+127] —— [-(2^7-1),+ 2^7-1] 两个0——1111 1111 和 0000 0000都表示0
补码: [-128,+127] —— [-2^7,+ 2^7-1] 一个0 —— 0000 0000 表示0, 1000 0000 表示-128

补码运算
两个补码的运算结果还是一个补码
如果产生最高位的进位,则称 “溢出位” ,在补码运算中溢出位可直接丢弃

西文字符

字符编码值的大小无意义,仅作为识别这些字符的依据

ASCII码

American Standard Code for Information Interchange
美国标准信息交换码
是一种定长码,是个人计算机中最常见的字符编码

ASCII码表

二进制十进制十六进制符号二进制十进制十六进制符号
00000000000NUL010000016541A
00000001101SOH010000106642B
00000010202STX010000116743C
00000011303ETX010001006844D
00000100404EOT010001016945E
00000101505ENQ010001107046F
00000110606ACK010001117147G
00000111707BEL010010007248H
00001000808BS010010017349I
00001001909HT01001010744AJ
00001010100ALF01001011754BK
00001011110BVT01001100764CL
00001100120CFF01001101774DM
00001101130DCR01001110784EN
00001110140ESO01001111794FO
00001111150FSI010100008050P
000100001610DLE010100018151Q
000100011711DC1010100108252R
000100101812DC2010100118353S
000100111913DC3010101008454T
000101002014DC4010101018555U
000101012115NAK010101108656V
000101102216SYN010101118757W
000101112317ETB010110008858X
000110002418CAN010110018959Y
000110012519EM01011010905AZ
00011010261ASUB01011011915B[
00011011271BESC01011100925C\
00011100281CFS01011101935D]
00011101291DGS01011110945E^
00011110301ERS01011111955F_
00011111311FUS011000009660`
001000003220空格符011000019761a
001000013321!011000109862b
001000103422"011000119963c
001000113523#0110010010064d
001001003624$0110010110165e
001001013725%0110011010266f
001001103826&0110011110367g
0010011139270110100010468h
001010004028(0110100110569i
001010014129)011010101066Aj
00101010422A*011010111076Bk
00101011432B+011011001086Cl
00101100442C,011011011096Dm
00101101452D-011011101106En
00101110462E.011011111116Fo
00101111472F/0111000011270p
00110000483000111000111371q
00110001493110111001011472r
00110010503220111001111573s
00110011513330111010011674t
00110100523440111010111775u
00110101533550111011011876v
00110110543660111011111977w
00110111553770111100012078x
00111000563880111100112179y
0011100157399011110101227Az
00111010583A:011110111237B{
00111011593B;011111001247C|
00111100603C<011111011257D}
00111101613D=011111101267E~
00111110623E>011111111277FDEL
00111111633F?
010000006440@
  • 基本版: 7位编码,8位存储 共可表示 2^7 = 128 个字符,最高位可作为奇偶校验位(多少个1)

特点:
1.存储时,字节的最高位总是为0
2.数字字符、大写字母、小写字母分别连续编码
3.小写字母的编码-对应的大写字母编码=32 例如:97(a) -65(A)=32
4.控制字符——34个,又称非图形字符,编码范围0-32和127
5.普通字符——94个,又称为图形字符,编码范围33-126

  • 扩充版:8位编码,8位存储——共可表示2^8=256个字符

常见的字符ASCII码
00D(00H) —— 0000 0000B —— NUL
10D(0AH) —— 0000 1010B —— 换行符
13D(0DH) —— 0000 1101B —— 回车符
32D(20H) —— 0010 0000B —— 空格符
48D(30H) —— 0011 0000B —— 数字字符"0"
57D(39H) —— 0011 1001B —— 数字字符"9"
65D(41H) —— 0100 0001B —— 大写字母"A"
90D(5AH) —— 0101 1000B —— 大写字母"Z"
97D(61H) —— 0110 0001B —— 小写字母"a"
122D(7AH) —— 0111 1000B —— 小写字母"z"
127D(7FH) —— 0111 1111B —— DEL

EBCDIC码

  • 概念 —— Extended Binary Coded Decimal Interchange Code, 扩展的2-10进制的交换码

说明:IBM公司的大型机专用,个人计算机和操作系统仍使用ASCII码,EBCDIC码英文字母的编码不连续

中文字符

概述

汉字处理:

  1. 键盘上无汉字,不能直接利用键盘输入,需要输入码来对应
  2. 不同的输入码输入后按统一的标准编码,为了与ASCII码区分,在计算机内的存储需要机内码表示,以便存储、处理和传输
  3. 汉字量大,字形变化复杂,需要用对应的字库来存储
  4. 汉字的输入、存储、处理、输出过程中使用的汉字编码不同,之间要进行相互转换
  • 处理流程:
    输入码(外码) -> 交换码(国际码) - > 机内码(内码) -> 输出码(字形码)
    输入码(区位码) + 2020H = 交换码(国际码)
    交换码(国际码) + 8080H = 机内码(内码)

输入码:
通过键盘:
1.音码-拼音输入法
2.形码-五笔字型
3.音形结合码 智能ABC
4.区位码:一字一码,没有重码
(区号+位号,组成一个4位的10进制数,作为一个汉字的编码)
94区(01-94,行) 94位(01-94,列)
人工智能:
1.语音识别
2.手写识别
3.光学识别OCR
交换码:
1.西文字符:ASCII、EBCDIC
2.中文字符:国标码(基于区位码GB2312的交换码形式)、UTF-8
实际上 交换码=区位码+2020H 是为了避开ASCII码的前32位控制字符(控制字符0-32和127) 控制字符不会存储,计算机接收会马上做出反应
机内码
它是计算机内部在存储、处理汉字时使用的编码
(区分汉字和英文字符)
特点:
1.常见汉字的机内码使用连续的2个字节存储
2.每个字节的最高位都为1
机内码 = 国标码 + 8080H 国标码最大表示为7E7E=0111 1111 0111 1111 为了每个字节第一位为1所以加上8080H
输出码
字形码:汉字在显示或打印时使用的编码
使用n*m个像素点来存储和表示一个汉字的字形
1.点阵字形
2.矢量字形

点阵字形
在这里插入图片描述

使用N*M个像素点来存储和表示一个汉字的字形
点阵字形的存储容量= n*m 位
点阵字形的规模越大,字形越清晰,所需存储空间的容量越大

矢量字形
使用几何图元,用数学方程的形式来描述一个汉字的字形
优点:放大,缩小,旋转不会失真,显示效果更好

国标码

GB2312-80
1980颁布,1981实施
6763个汉字:一级常用汉字3755个拼音顺序排序,二级常用汉字3008个部首顺序排序

三种形态:
1.输入码(区位码) 最高位都是0
2.交换码(国标码) 最高位都是0
3.机内码 最高位都是1

GBK
1995年制定的内码扩展规范,包含了21003个汉字和883个图形符号,一共21886个字符编码
使用两个连续的字节存储一个汉字的编码
为了与ascii码区分,第一个字节的最高位是1,第二个字节的最高位可能是0或1
包括GB2312的所有的简体字和BIG5的所有繁体字
是对GB2312的扩充,与GB2312向下兼容

GB18030
2000年制定,2005改版
最新的国家强制标准
特点:可变长编码,可以使用连续的1、2或4个字节表示一个中国字,常见的汉字仍使用2个字节
共70244个中国字(包括少数民族的文字),简体繁体汉字的数量是27484个
与GB2312和GBK向下兼容

机内码

BIG5
1984年,台湾省的行业标准
BIG5又称大五码,台湾省和香港等繁体地区使用
BIG5是内码,使用两个字节表示一个汉字,包含13053个繁体字

UNICODE
是一个国际编码标准,又称"万国码"、“统一码”

  • utf-8:一种可变长编码,采用1~6个字节的编码位,与ASCII码兼容
  • utf-16:一种可变长编码,采用2或4个字节的编码位,与ASCII码不兼容
  • utf-32:一种定长编码,固定的采用4个字节的编码位,与ASCII码不兼容

汉字处理的常见问题

  • 全半角字符
    1.全角字符:两个字存储,宽度与汉字相同
    2.半角字符:一个字节存储,宽度是汉字一半

  • 字库
    在操作系统中,通常以字库文件的形式存在
    字库中保存的是汉字的字母,显示或打印输出时按照内码检索字库,输出字模

  • 乱码
    乱码的产生:文件在保存时用A编码,打开时用B编码,A与B不兼容

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值