第二章:信息表示与编码

文章目录:

一:进制转换

1.进制的概念

2.常见的进制

3.进制的转换

3.1 任意进制——>十进制

3.2 十进制——>任意进制

3.3 二八十六相互转换

4.进制的运算

4.1 算术运算

4.2 移位运算

4.3 逻辑运算

5.其它考点

二:信息基础

1.信息社会

2.信息单位(bit byte word)

3.信息传输

4.其它考点

三:常见编码

1.数字

1.1 表示正负号(原码 反码 补码)

1.1.1 无符号数

1.1.2 有符号数 

1.2 表示小数点

1.3 8412BCD码

2.西文字符(ascll码 ebcdic码)

Ascll码位置计算{计算题}

3.中文字符(输入码 交换码 机内码 输出码)

3.1 概述

机内码和国标码计算{计算题} 

3.2 中文编码

字形码点阵{计算题} 

3.3 相关问题

4.其它考点


可参考:进制转换【最全进制转换汇总】(整数_小数_正数_负数)任意进制之间的相互转换

一:进制转换

1.进制的概念

任何一种进制都有三要素:基数、位权、符号集 

r基数/系数
    十进制:基数是 10(用 0~9 共 10 个数码)
    二进制:基数是 2(用 0 和 1 两个数码)
    十六进制:基数是 16(用 0~9 和 A~F 共 16 个数码)


ai数码:里面的每一位值
	 1	2	3	4	5


数位:2	1	0	-1	-2


数值:1  2	3.	4	5 = 1*10^2 + 2*10^1 + 3*10^0 + 4*10^-1 + 5*10^-2


R^i位权:				  10^2	   10^1		10^0	 10^-1	   10^-2


符号集/基数符号:二进制的基数符号0和1

定义:数制是⽤⼀组固定的数字和⼀套统⼀的规则来表⽰数⽬的⽅法,有进位计数制与⾮进位计数制之分
     以进位进⾏计数的统⼀规则,称为进位计数制


基数:Radix,⼀般记为R                            进制中能够使⽤的数字符号的个数 R进制的基数 = R
    系数:⼜称数码,即出现在数字中每⼀位上的数字符号

    例如,⼗进制数12,⼗位上的系数(数码)是1,个位上的系数(数码)是2


数位:进制中不同位置的数字编号
    整数部分,从小数点的位置开始,从右⾄左依次编号为0, 1, 2, 3, ...
    小数部分,从小数点的位置开始,从左⾄右依次编号为-1, -2, -3, ...

    例如,⼗进制数123.45,1所在的位置其数位为2,5所在的位置其数位为-2


位权:进制中每⼀位上代表的数值⼤小                  某⼀位的位权 = 基数的数位次⽅
    例如,⼗进制数123.45(基数为10)
            1所在的位置其位权为10的2次⽅(记为10^2)
            5所在的位置位权为10的-2次⽅(记为10^-2)


数值:某个特定的R进制数表⽰的数量,也称为数⽬        数值=每⼀位的“系数*位权”的累加和
    例如,⼗进制数123.45的数值⼤小 = 1*10^2+2*10^1+3*10^0+4*10^-1+5*10^-2


2.常见的进制

⼈们习惯使⽤⼗进制数,而计算机使⽤的是⼆进制数,为了书写和表⽰⽅便,还引⼊了⼋进制数和⼗六进制数

⼆进制:B
    基数      R = 2
    基数符号  只有两个,即0和1
    表⽰⽅式  数字后加上⼤写字⺟B,例如1101B,B即Binary;(111011)2

    计算机采⽤2进制的原因
        主要原因:符合电⼦计算机物理元件的性能特性,物理上容易实现
        其它原因:运算简单,通⽤性强、便于表⽰和进⾏逻辑运算、可靠性⾼、抗⼲扰能⼒强


⼋进制:O
    基数      R = 8
    基数符号  0, 1, 2, 3, 4, 5, 6, 7
    表⽰⽅式  数字后加上⼤写字⺟O,例如123O或123Q或0123,O即Octal;(215)8


⼗进制:D
    基数      R = 10
    基数符号  0, 1, 2, 3, 4, 5, 6, 7, 8, 9
    表⽰⽅式  数字后加上⼤写字⺟D,例如123D或123,D即Decimal;(72)10


⼗六进制:OX/H表示
    基数      R = 16
    基数符号  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A(10), B(11), C(12), D(13), E(14), F(15)
    表⽰⽅式  数字后加上⼤写字⺟H,例如3E6H,H即Hexadecimal;(16AB)16

3.进制的转换

3.1 任意进制——>十进制

任意进制 → ⼗进制:按权展开,乘权求和
    对任何⼀种进位计数制表⽰的数都可以写出按其权值展开的多项式之和
    整数部分与小数部分的转换⽅式相同

3.2 十进制——>任意进制

⼗进制 → 任意进制:将⼗进制数转换为r进制数时,可将此数分成整数与小数两部分分别转换,然后再拼接起来即可
    整数部分:除基逆序取余 除以基,留余数,商0为⽌,倒着连
    小数部分:乘基顺序取整 乘以基,取整数,结果为0,顺着连
        乘不尽:⼀个有限位的⼗进制小数可能对应⼀个⽆限循环的其它进制的小数
           ⼗进制数保留最后位有效位采⽤四舍五⼊,⼋进制则采⽤三舍四⼊
        举例:十进制0.1——>八进制
            0.1 * 8 = 0.8 (余数为0,但关注小数部分0.8)
            0.8 * 8 = 6.4 (余数为6,八进制小数部分为0.6...)
            0.4 * 8 = 3.2 (余数为3,继续...)
            0.2 * 8 = 1.6 (余数为1,继续...)
            0.6 * 8 = 4.8 (余数为4,继续...)
            ... (无限循环下去)
        因此,0.1(十进制)在八进制下表示为 0.063146314631...(一个无限循环小数)

整数

含小数

3.3 二八十六相互转换

64    32    16    8    4    2    1    .    1/2    1/4    1/8    1/16    1/32    1/64 
⼋、⼗六进制转换为⼆进制:8421法从右往左
    八进制——>二进制:因为8^1=2^3,所以1位8进制数与3位2进制数⼀⼀对应
        例子:八进制124 -> 001 010 100 -> 二进制101010

    十六进制——>二进制:因为16^1=2^4,所以1位16进制数与4位2进制数⼀⼀对应
        例子:十六进制2A -> 0010 1010 -> 二进制101010



⼆进制转换为⼋进制
    整数部分:从右⾄左每3位⼀组分组,不⾜部分前⾯添0
    小数部分:从左⾄右每3位⼀组分组,不⾜部分后⾯添0

    例子:二进制101010 -> 001 010 100 -> 1 2 4 -> 八进制124
    例子:二进制数 1101.101 ->  001 101 . 101 -> 八进制15.5



⼆进制转换为⼗六进制
    整数部分:从右⾄左每4位⼀组分组,不⾜部分前⾯添0
    小数部分:从左⾄右每4位⼀组分组,不⾜部分后⾯添0

    例子:二进制101010 -> 0010 1010 -> 2 A -> 十六进制2A
    例子:二进制数 1011.011 -> 1011 . 0110  ->  十六进制B.6 


八进制转十六进制:先将八进制转化为二进制,再将二进制转化为十六进制
    例子:八进制124 -> 二进制101010 -> 十六进制2A


十六进制转八进制:先将十六进制转化为二进制,再将二进制转化为八进制
    例子:十六进制2A -> 二进制101010 -> 八进制124

4.进制的运算

4.1 算术运算

⼆进制
    奇偶判定:⼆进制整数的末尾为1是奇数,末尾为0是偶数

    算术运算
        加:在计算机内部,加法运算是基本运算
            逢2进1  0+0=0, 0+1=1, 1+0=1, 1+1=10

                1011
              + 1101
             -------
               11000

        减:减法实质上是加上⼀个负数,主要是应⽤了补码运算
            借1当2  0-0 = 0, 1-0 =1, 1-1 = 0, 10-1 = 1(0-1 = -1)

                1101
              - 1011
             -------
                0010
    
        乘:⼆进制的乘法运算,相当于移位运算和加法运算
                101
            x    11
            -------
                101
            +  1010
            -------
               1111 

        除:⼆进制的除法运算,相当于移位运算和减法运算
                   10
                 __________
             101|1101
                 101
                 ——————————
                 0011
         
           
⼋进制:逢8进1(加法),借1当8(减法)
    加
        57
      + 34
     -----
       113
    减
        75
      - 37
     -----
        36
    乘法和除法与二进制运算类似,但注意每位数字的取值范围是0到7:转化为10进制方便计算


⼗六进制:逢16进1(加法),借1当16(减法) 注意10写作A,11写作B,...,15写作F
    加
        A3
      + 5F
     -----
       102
    减
        FA
      - 7C
     -----
        7E
    乘法和除法与二进制运算类似,但注意每位数字的取值范围是0到F:转化为10进制方便计算

4.2 移位运算

移动小数点
    正数的小数点左移m位 相当于除以R^m
        原始数字:1011.01 = 11.25
        左移2位: 10.1101 = 2.8125

    正数的小数点右移m位 相当于乘以R^m
        原始数字:1011.01    = 11.25
        右移2位: 101101.00  = 45


数字平移补0
    正数整体向左平移m位 相当于乘以R^m
        原始数字:  1011.01    = 11.25
        左平移2位: 101101.00  = 45

    正数整体向右平移m位 相当于除以R^m
        原始数字:  1011.01 = 11.25
        右平移2位: 10.1101 = 2.8125

4.3 逻辑运算

概念
    布尔代数
        英国数学家布尔于1847年提出⽤符号表达语⾔和思维逻辑的思想,称为逻辑代数或布尔代数
        计算机中使⽤了实现各种逻辑功能的电路,并利⽤逻辑代数的规则进⾏各种逻辑判断
        正因为此,计算机发展成为具有智能作⽤的“电脑”
    ⼆元逻辑
        布尔代数中只有两个值:真和假,分别⽤⼆进制数1和0表⽰,这种具有逻辑性的量称为逻辑量
        ⼀个判定的结果只有真(1)或假(0),不能即真⼜假,也不能即不真也不假
    按位运算
        运算规则:每⼀位独⽴地进⾏逻辑运算,不受其它位的影响
        典型应⽤:已知IP地址与⼦⽹掩码,求⼦⽹地址,需要使⽤“按位与”运算


类型
    逻辑⾮:~
        规则:⾮0即1,⾮1即0 ~0=1 ,~1=0
        意义:表⽰“不”、“否”等否定逻辑

    逻辑与:^或×
        符号:可以使⽤^或×(逻辑乘)表⽰
        规则:有0则0 1 ^ 1 = 1 ,1 ^ 0 = 0 ,0 ^ 1 = 0 ,0 ^ 0 = 0
        意义:表⽰“并且、同时、但是”等逻辑    

    逻辑或:v或+
        符号:可以使⽤v或+(逻辑加)表⽰
        规则:有1则1 1 v 1 = 1 ,1 v 0 = 1 ,0 v 1 = 1 ,0 v 0 = 0
        意义:表⽰“或者”等逻辑

    逻辑异或:⊕
        规则:同0异1 
             1 ⊕ 1 = 0 ,1 ⊕ 0 = 1 ,0 ⊕ 1 = 1 ,0 ⊕ 0 = 0
        意义:表⽰“模2加法”,即不带进位的2进制加法
        性质
            交换律 a ⊕ b = b ⊕ a
            结合律 ( a ⊕ b ) ⊕ c = A ⊕ ( B ⊕ C )
            归零律 a ⊕ a = 0
            恒等律 a ⊕ 0 = a
            ⾃反性 a ⊕ b ⊕ b = a

5.其它考点

采用十六进制不用二进制书写是因为:十六进制书写比二进制方便


计算机内部普遍采用二进制方法存储信息的主要原因是:信息的物理表示容易实现


计算机内部:采用二进制表示信息(逢二进一)


十进制27转二进制:11011
    方法一:除二倒序
    方法二:8421
    方法三:除16倒叙 1B、再转换成二进制


计算机的逻辑运算:1表示逻辑真


十进制小数不一定能精确的转换成二进制小数:0.1    0.2    0.6    0.8
    十进制 0.1
    二进制表示为:0.0001100110011...


计算机的计算精度可以精确到小数 0.5,但是不能精确到小数 0.6
    在二进制中,小数部分只能表示为 2 的负幂之和(如 0.5, 0.25, 0.125 等)
    
    0.5 的二进制表示是精确的(0.1)2,因为它是 2^-1
    0.6 的二进制表示是无限循环的(0.100110011001..)2,无法精确存储

二:信息基础

1.信息社会

概念:⼈类社会正由⼯业社会全⾯进⼊信息社会
    特征:社会信息化、设备数字化、通信⽹络化
    内容:在信息社会中,信息成为⽐物质和能源更为重要的资源
          以开发和利⽤信息资源为⽬的的信息经济活动成为国⺠经济活动的主要内容
    动⼒:信息社会的主要动⼒以3C技术为核⼼
        通信技术 Communication
        控制技术 Control
        计算机技术  Computer
        3C技术发展趋势 越来越友好的⼈机界⾯、越来越个性化的功能设计、越来越⾼的性价⽐


数据:数据是可识别的、抽象的符号
    数据处理
        概念
            数据处理是对数据的采集、存储、检索、加⼯、变换和传输
            数据经过处理后,表现形式仍然是数据
            处理数据是为了便于更好地解释数据,只有经过解释,数据才有意义,才成为信息
        ⽬的
            数据处理的基本⽬的是从⼤量的、可能是杂乱⽆章的、难以理解的数据中抽取并推
            导出对于某些特定的⼈们来说是有价值、有意义的信息
    处理软件:数据处理离不开应⽤软件的⽀持,包括通⽤应⽤软件和专⽤数据处理软件
        通⽤软件 例如办公软件包,包括字处理、桌⾯排版、演⽰软件、电⼦表格等软件
        专⽤软件 例如⼯资管理、财务管理、⾦融分析、施⼯管理、交通运输管理等软件


信息
    ⾹农对信息的定义:信息 = 消除不确定性的东西 = 不确定性的减少 = 确定性的增加
    计算机领域的定义:信息是加⼯处理后的有意义的数据
    数据与信息的关  :信息是有意义的,数据没有


编码
    定义
        通俗地说,⽤数字、字⺟等按规定的⽅法和位数来代表特定的信息即为编码
        计算机中存放的任何形式的数据都以“0”和“1”的⼆进制编码表⽰和存放
        进⼊计算机中的各种数据都要进⾏⼆进制编码的转换,从计算机输出的数据都要进⾏逆向转换
        在计算机领域中,所谓编码,即数字化,就是使⽤2进制数唯⼀地表⽰其它类型的信息的⽅法
    数字化
        定义
            数字化是⽤⼆进制编码对多种信息进⾏表达、存储、传输和处理
            这些信息包括:⽂字、数字、声⾳、图形、图像、影像等
        在信息社会中,数字化是重要的技术基础,因此信息社会就是数字化社会

解码 为从计算机输出数据而将2进制编码还原为其它类型的数据的⽅法,是编码的逆过程

2.信息单位(bit byte word)

信息量
    为了从N个相等的可能事件中挑选出⼀个事件所需的信息度量和含量,所提问“是或否”的次数
    将信息源所有可能事件的信息量进⾏平均,即可得到信息的“熵”(entropy),即平均信息量

最小单位
    ⽐特,bit,b 信息的最小单位,也是计算机中存储器的最小单位
    1⽐特 = 1位2进制数能够存储和表⽰的信息

基本单位
    字节,Byte,B 计算机中存储和表⽰信息的基本单位
    1Byte = 8bits,1B = 8b,1字节 = 8⽐特,即8个2进制位

字(Word)
    计算机进行数据处理时,一次存储、处理和传送的数据称为“字一个字包含一个或若干字节
    字长是计算机一次所能处理数据的实际位数,决定了计算机数据处理的速度,是衡量计算机性能的一个重要指标

----------------------------------------------------------------------------------------

国际单位制词头:SI,万国公制规范标准
    表⽰⽅式
        KB、MB、GB、TB、PB、EB、ZB、YB、...
        千字节、兆字节、吉字节、特字节、拍字节、艾字节、泽字节、尧字节 ...
    进位关系:按1000(10^3)进位
        1KB=1000B=10^3B
        1MB=1000KB=10^6B
        1GB=1000MB=10^9B


2进制乘数词头:IEEE 1541-2002规范标准
    表⽰⽅式:KiB、MiB、GiB、TiB、PiB、EiB、ZiB、YiB、...
    进位关系:按1024(2^10)进位
        1KiB=1024B=2^10B
        1MiB=1024KiB=2^20B
        1GiB=1024MiB=2^30B

3.信息传输

概念
    信息是可以传输的,信息只有通过传输和交流才能发挥它的作⽤
    在数字通信中,信息的传输是通过⽐特(bit)的传输来实现的


分类
    基带传输
        短距离,如局域⽹、计算机内部、主机与外部设备之间
        直接传输表⽰“0/1”信息的电信号或光信号(数字信号)
    频带传输
        远距离,如⼴域⽹、Internet中
        传输模拟信号,因此在发送端和接收端都需要使⽤调制解调器

4.其它考点

数据处理的主要任务:数据加工处理


信息:是不确定性内容的减少和消除(香农)


在计算机系统上:一个Byte字节 等于 8个二进制位bit位


信息处理是对数据的:采集、存储、检索、加工、交换和传输


信息社会的主要特征:社会信息化、设备数值化、通信网络化


信息社会的主要动力:计算机技术、通用技术、控制技术 为核心的现代信息技术飞速发展和广泛应用


在信息社会中,“信息”成为比物质和能源更为重要的资源


编码是用数值、字母等按规定的方法和位数来代表“特定的信息”


在计算机中存储的文字、图形、图像、音频文件等,都是被“数字化”的,以文件的形式存放的数据,以利于信息的管理

三:常见编码

1.数字

1.1 表示正负号(原码 反码 补码)

1.1.1 无符号数
⽆符号数:表⽰符号(默认表⽰正数),所有的数位都表⽰数值的⼀种表⽰⽅式
    1B  [0,255],       256个数 可以编码256种不同的状态        2^8-1=256-1
    2B  [0,65535],     65536个数 可以编码65536种不同的状态    2^16-1
    4B  [0,4294967295],43亿个左右不同的2进制数                2^32-1

         7  6  5   4     3  2  1  0
    最大:1  1  1  1     1   1  1 1  = 128+64+32+16+8+4+2+1 = 255    255+1=256=2^8
    最小:0  0  0   0    0   0  0  0 = 0
1.1.2 有符号数 
有符号数/机器数
    概念
        约定2进制数的最⾼位表⽰符号位(称为数符),其它位表⽰数值位
        符号位为0表⽰正数,符号位为1表⽰负数
        对有符号数,计算机中存储和使⽤它的补码形式
    编码:直接使⽤机器数或原码、反码进⾏运算,符号位需要单独处理
         补码可以⽅便地进⾏运算,因此计算机中存储和使⽤机器数的补码形式
         补码可以将减法化为加法实现:a - b = a + (-b)
            可以减少逻辑电路的种类,降低硬件的成本,提⾼计算机的稳定性

————————————————————————————————————————————————————————————————————————————————————

真值:正+ 负- 号表示符号的数
机器数:0和1来表示符号的数

        正数  
            原码 = 反码 = 补码
        负数
            原码:按约定表⽰的有符号数,即机器数
            反码:符号位保持不变,其它位按位取反         0→1,1→0
            补码:符号位保持不变,反码+1                补码的补码就是原码:把补码当原码来算补码

    举例
        正数
            机器数  0010 1100 ⾸位的0是符号位,表⽰正号
            原码    0010 1100
            反码    0010 1100
            补码    0010 1100
        负数
            机器数  1010 1100 ⾸位的1是符号位,表⽰负号
            原码    1010 1100
            反码    1101 0011
            补码    1101 0100 

 2^0=1        2^1=2        2^2=4        2^3=8        2^4=16        2^5=32        2^6=64        2^7=128        2^8=256 

范围:最高位(第8位)是符号位
              7 6 5 4   3 2 1 0
        最大:0  1 1 1   1 1 1 1 = 64+32+16+8+4+2+1 = 127    127+1=128=2^7  
        最小:1  1 1 1   1 1 1 1 = -127

        正数:从0000 0000到0111 1111    从0到127
        负数:从1000 0000到1111 1111    从0到-127
————————————————————————————————————————————————————————————————————————————————————
        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

            补码:对于负数,其补码表示是其绝对值的原码表示取反后加 1
                [-128,+127]                         [-2^7,+2^7-1]
                ⼀个0:0000,0000表⽰0,1000,0000表⽰-128=-2^7   

                [x]补 + |x真| = 模    x真=-128

                最小值:11111111  但这不是原码,而是补码
                    要找到这个补码对应的原码(即绝对值),我们需要取反加1
                        补码:1111 1111
                        取反:1000 0000
                        加1: 1000 0001    原码是-1

                        补码:1000 0001
                        取反:1111 1110
                        加1: 1111 1111    原码是-128
                    
        2B
            原码
                [-32767,+32767]                     [-(2^15-1),+2^15-1]
                两个0:1000,0000,0000,0000和0000,0000,0000,0000都表⽰0

            反码
                [-32767,+32767]                     [-(2^15-1),+2^15-1]
                两个0:1111,1111,1111,1111和0000,0000,0000,0000都表⽰0

            补码
                [-32768,+32767]                     [-2^15,+2^15-1]
                ⼀个0:0000,0000,0000,0000表⽰0,1000,0000,0000,0000表⽰-32768     
    ------------------------------------------------------------------------------------
    补码运算
        在数值的有效表⽰范围内,符号位和数值位⼀起参加运算
        两个补码运算的结果仍然是⼀个补码,已知补码求原码的⽅法与已知原码求补码的⽅法⼀模⼀样
        如果产⽣最⾼位的进位,则该进位称为“溢出位”,在补码运算中溢出位可直接丢弃
        如果运算的结果不在数值的有效表⽰范围内,则结果⽆效

1.2 表示小数点

在计算机中小数点是不占位置的,有三种表⽰⽅式,分别为定点整数、定点小数和两者结合成的浮点数

定点数
    概念
        表⽰?a.b?这个小数
        在固定的位置将⼀个⼆进制数分成两个部分,前半部分表⽰整数(记为a),后半部分表⽰小数(记为b)
    分类
        定点整数
            纯整数,小数点隐含固定在机器数的最右边
            1B 口口口口 口口口口 .  第1位是符号位,其余部分是数值位,表⽰⼀个纯整数
        定点小数
            纯小数,小数点隐含固定在符号位与数值位之间
            1B 口 . 口口口 口口口口 第1位是符号位,其余部分是数值位,表⽰⼀个纯小数

    特点
        优点 表⽰⽅法简单,计算速度快
        缺点 数值范围⽐较小


浮点数:科学计数法
    概念:在固定的位置将⼀个⼆进制数分成两个部分,前半部分表⽰阶码(记为a),后半部分表⽰尾数(记为b)
    说明
        表⽰“2^a*b” 这个说法只是为了便于理解的⼀个简化版本
        阶码决定范围,尾数决定精度

    规范 规格化浮点数
        IEEE在1985年制定了IEEE 754标准,采⽤此标准表⽰的浮点数称为“规格化浮点数”
        ⽬前,绝⼤多数计算机都遵守这⼀标准,极⼤地改善了各种软件的可移植性
        单精度浮点数 Float或Single,4个字节,32位
        双精度浮点数 Double,8个字节,64位 双精度浮点数的范围更⼤、精度更⾼,可提供更多有效数字位数

    特点
        优点 表⽰小数的精度⾼,范围⼴
        缺点 表⽰⽅法较复杂,计算速度较慢

1.3 8412BCD码

规则
    基于8421法,建⽴1位10进制数与4位2进制数的⼀⼀对应关系
    0000B对应0D、0001B对应1D、...、1001B对应9D


说明
    在这种编码⽅案中,不会出现“1010, 1011, 1100, 1101, 1110, 1111”这6个4位的2进制码
    例如,10进制数9527的8421BCD码为:1001 0101 0010 0111

2.西文字符(ascll码 ebcdic码)

字符编码值的⼤小⽆意义,仅作为识别与使⽤这些字符的依据

ASCII码:American Standard Code for Information Interchange
        美国标准信息交换码,也译为美国信息交换标准代码
        是⼀种定⻓编码,是个⼈计算机中最常⻅的字符编码

    分类
        基本版:7位编码,8位存储
                共可表⽰ 2^7 = 128 个字符
                最⾼位可作为奇偶校验位
            特点
                存储时,字节的最⾼位总是为0
                数字字符、⼤写字⺟、小写字⺟分别连续编码
                小写字⺟的编码 - 对应的⼤写字⺟的编码 = 32
                控制字符 34个,⼜称为⾮图形字符,编码范围0~32和127
                普通字符 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 1010B ⼤写字⺟?Z?
        97D(61H) 0110 0001B 小写字⺟?a?
        122D(7AH)0111 1010B 小写字⺟?z?
        127D(7FH)0111 1111B DEL


EBCDIC码
    概念 Extended Binary Coded Decimal Interchange Code,扩展的2-10进制交换码
    说明
        IBM公司的⼤型机专⽤,个⼈计算机和⼯作站的操作系统仍然使⽤ASCII码
        英⽂字⺟的编码不连续

Ascll码位置计算{计算题}

例题1:已知大写字母 P 的 ASCII 码值为 50H,则大写字母 I 的 ASCII 码值为(49H)
    'I' 是第 9 个字母
    'P' 是第 16 个字母

    'I' 的ASCII码 = 'P' 的ASCII码 - 7 = 50H - 7
        50H(即 5×16 + 0 = 80 十进制)
        减去 7:
        80 - 7 = 73(十进制)

        将 73 转换为十六进制:
        73 ÷ 16 = 4 余 9 → 49H

3.中文字符(输入码 交换码 机内码 输出码)

3.1 概述

汉字处理
    ① 键盘上⽆汉字,不能直接利⽤键盘输⼊,需要输⼊码来对应
    ② 不同的输⼊码输⼊后按统⼀的标准编码,为了与ASCII码区分,在计算机内的存储需要机内码来表⽰,以便存储、处理和传输
    ③ 汉字量⼤,字形变化复杂,需要⽤对应的字库来存储
    ④ 汉字的输⼊、存储、处理和输出过程中使⽤的汉字编码不同,之间要进⾏相互转换


处理流程:输⼊码(外码) → 交换码(国标码)→ 机内码(内码)→ 输出码(字形码)
    步骤	编码类型	            作用	                        示例
    输入码	外码	    用户输入汉字的初步编码	            拼音“zhong”对应“中”
    交换码	国标码	    汉字在不同系统之间交换的标准编码	    GB2312中的D6D0
    机内码	内码	    计算机内部存储和处理汉字的编码	        国标码的高位加1即加上 0x8080(如5650)
        D6 + 80 = 56(十六进制)
        D0 + 80 = 50(十六进制)
    输出码	字形码	    显示或打印汉字的可视化编码	        点阵或矢量字形
机内码和国标码计算{计算题} 
机内码 = 国标码 + 8080H
例题1:汉字“中”字的国标码对应的十六进制为 5650H(二进制为 01010110 01010000),则它对
应的机内码用十六进制表示为?
    已知国标码:5650H(十六进制)

    国标码转换为二进制:5650H = 01010110 01010000(二进制)

    机内码的计算公式:机内码 = 国标码 + 8080H = 5650H + 8080H = D6D0H

3.2 中文编码

输⼊码:⼜称为外码,将汉字信息输⼊到计算机内部使⽤的编码
    分类
        键盘输⼊
            拼⾳码 各种拼⾳输⼊法,如搜狗拼⾳、紫光华宇、Windows⾃带的拼⾳输⼊法等
            拼型码 五笔字型,如万能五笔、王码五笔
            ⾳型结合码 既可以拼⾳⼜可以拼型,例如⾃然码
            区位码 GB2312的输⼊码形式
        智能输⼊ 语⾳识别、⼿写识别、OCR识别(扫描输⼊)


国标码
    GB2312:称为“GB2312-80”,即“信息交换⽤汉字编码字符集”,⼀般称“国标码”
        三种形态
            输⼊码  区位码 94区(⾏),94位(列),区和位的编码范围都是1~94
            交换码  即国标码(GB2312)
                区位码 + 2020H → 国标码
                需要将区码和位码分别转换成16进制数再执⾏转换
            机内码  为与ASCII兼容而采⽤ 国标码 + 8080H → 机内码
        说明
            1980年颁布,包含6763个汉字和682个⾮汉字图形字符
            ⼀级常⽤汉字3755个,⼆级常⽤汉字3008个
            ⼀级常⽤汉字按拼⾳顺序排序,⼆级常⽤汉字按部⾸顺序排序
            使⽤两个字节表⽰⼀个汉字,只包含简体字
            国标码使⽤了每个字节的低7位,每个字节的最⾼位为0
            编码取值范围从33~126,与ASCII码中的图形字符的数量和范围⼀致
    GBK:全称为“汉字内码扩展规范”,是对GB2312的扩充,与GB2312向下兼容
        说明
            1995年制定,包含21003个汉字和883个图形符号,⼀共21886个字符编码
            包括GB2312的所有简体字和BIG5的所有繁体字
            GBK属于机内码的范畴,使⽤两个字节表⽰⼀个汉字
            为与ASCII码区分,第⼀个字节的最⾼位为1,第⼆个字节的最⾼位为0或1
    GB18030:全称为“信息技术中⽂编码字符集”,与GB2312和GBK向下兼容
        说明
            2005年制定,共70244个中国字(包括少数⺠族的⽂字),简繁汉字的数量是27484个
            我国最新的编码字符集,已代替GB2312成为国家现⾏标准,具有强制⼒
            采⽤现代编码⽅式,既可认为是⼀种交换码,也可认为是⼀种机内码
            可变⻓编码,可使⽤1、2、4个字节表⽰⼀个汉字


机内码:字符在内存、⽂本⽂件中使⽤的编码形式。主要包含GB2312的机内码形式、GBK、GB18030、BIG5码和Unicode码
    分类
        BIG5:⼜称为“⼤五码”,台湾、⾹港等繁体中⽂地区使⽤
            1984年颁布,包含13053个繁体字
            BIG5是内码,使⽤两个字节表⽰⼀个汉字
        UNICODE:是⼀个国际编码标准,⼜称“万国码”、“统⼀码”
            实现⽅式
                UTF-8  ⼀种可变⻓编码,采⽤1~6个字节的编码位,与ASCII码兼容
                UTF-16  ⼀种可变⻓编码,采⽤2或4个字节的编码位,与ASCII码不兼容
                UTF-32 ⼀种定⻓编码,固定的采⽤4个字节的编码位,与ASCII码不兼容
            说明
                1994年颁布,共包含92856个CJK中⽂字符
                ⽬前实⽤的版本对应于UCS-2,与ISO 10646通⽤字符集对应,使⽤16位编码空间
                每个字符都占⽤等⻓的两个字节,例如,⼤写字⺟A的UTF-16编码为0000 0000 0100 0001
                ⽬前,Windows操作系统的内核已经⽀持Unicode字符集
    说明
        汉字的机内码唯⼀
        GB2312中汉字的机内码是2个字节,且每个字节的最⾼位都是1
        GBK中的汉字机内码也是2个字节,且第⼀个字节的最⾼位是1,第⼆个字节的最⾼位可能为1,也可能为0
        汉字机内码的每个字节均⼤于A0H


字形码:字形码是显示或打印输出汉字时产生的字形,这种编码是通过点阵来实现的。全部的字形码都放在汉字字库里


输出码:将⽂本字符在显⽰屏或打印机输出时使⽤的编码
    点阵字模
        使⽤N*M个像素点来存储和表⽰⼀个汉字的字形
        掌握 点阵字形的数据量计算 数据量 = N*M/8,单位“字节(Byte)”
        注意
            点阵的规模越⼤,字形越清晰,所需存储空间的容量越⼤
            点阵字模放⼤、缩小、旋转都会导致失真
    ⽮量字模:⽮量表⽰⽅式存储的是描述汉字字形的轮廓特征
        ⽮量化字形描述与最终⽂字显⽰的⼤小、分辨率⽆关,因此可以产⽣⾼质量的汉字输出
        放⼤、缩小、旋转不会失真,显⽰效果更好
        ⽬前⼤多数的字体都采⽤基于True Type技术的⽮量字模
    总结 点阵字模编码、存储⽅式简单,⽆需转换直接输出,但字形放⼤后产⽣的效果差,⽮量⽅式特点正好与前者相反
字形码点阵{计算题} 

字形码点阵计算:数据量 = N*M/8,单位“字节(Byte)

例题1:24*24点阵汉字库存储一个汉字需要使用:72个字节 
    (24*24)/8 = 72
    b           B


例题2:在计算机中,存储16X16的汉字点阵字模需要的字节数是?
    总位数 = 行数 × 列数
    所需字节数 = 总位数 ÷ 8

    16X16=256bits/8 = 32byte


例题3:若存储500个32*32点阵的汉字字模信息,需要的存储容量是?
    (32*32*500)/(8*1024) = 64kb
    b  ——————>    kb

3.3 相关问题

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


乱码
    乱码的产⽣
        ⽂件在保存时⽤A编码,打开时却指定使⽤B编码,且A和B不兼容
        例如 存储⽂件时使⽤GB2312-80,打开时却指定以UTF-8显⽰,由于GB2312-80与UTF-8不兼容,就会   产⽣乱码
    乱码的解决
        在存储和打开时⽂件时,使⽤相同或兼容的编码
        例如
            存储⽂件时使⽤GB2312-80,打开时也使⽤GB2312-80,则不会产⽣乱码。
            存储⽂件时使⽤GB2312-80,打开时使⽤GB18030,因为GB18030向下兼容GB2312,所以也不会产⽣乱码


ASCII:ASCII既可作为输⼊码也可作为交换码和机内码


全半⻆
    半⻆字符⼀个字节,宽度是汉字的⼀半 通常英⽂输⼊法状态下输⼊的就是半⻆字符
    全⻆字符两个字节,宽度与汉字相同 通常中⽂输⼊法状态下输⼊的就是全⻆字符

4.其它考点

两位二进制可以表示:4种不同状态
    00    01    10    11


利用2个字节编码,可表示2^16=65535个状态


用1个字节表示的非负整数,最小数为0,最大值为2^8-1=255
    256     128 64 32 16     8 4 2 1

    最小值:0000 0000(二进制) = 0(十进制)
    最大值:1111 1111(二进制) = 255(十进制)
    2^8=256


在科学计算中溢出指:数值超出了机器的位所表示的范围


负数补码 = 反码 + 1


8位机器码10110100,它是补码时,表示的十进制值是:-76
    方法一:逆向
        [x]补码 = 1011 0100
        [x]反码 = 1011 0011 
        [x]原码 = 1100 1100
        [x]真值 = -100 1100 = -76D

    方法二:补码的补码就是原码
        [x]补码 = 1011 0100
        [x]补反 = 1100 1011
        [x]补补 = 1100 1100
        [x]原码 = -100 1100 = -76D


阶码:就是二进制的科学计数法


BCD码(Binary-Coded Decimal‎):专门用二进制数表示十进制数的编码


ASCll:美国标准信息交换代码


ascll码是字符编码,用7个二进制位数表示一个字符
    为了兼容性,最左边总是0
    2^7 = 128种不同字符     
        128  64  32  16   8  4  2  1
        7     6   5   4   3  2  1  0


1个汉字内码,占用的字节数是:2个字节


在计算机内部用机内码不用国标码表示汉字的原因是:有些情况下,国标码有可能造成误解
    画:国标码(; -)    
    机内码最高位:1    ascll码 国标码最高位:0

    ASCII码与国标码的冲突
        ASCII码:是计算机中最常用的字符编码标准,用于表示英文字符、数字和符号。ASCII码的范围是 0x00~0x7F(即0~127)
        国标码:GB2312编码中,汉字的国标码范围是 0x21~0x7E(即33~126),这与ASCII码的范围有重叠
        问题:如果直接使用国标码,计算机无法区分一个字节是ASCII字符还是汉字的一部分,从而导致误解

    机内码:通过对国标码进行转换(通常是高位加1),将国标码的范围从 0x21~0x7E 变为 0xA1~0xFE

    编码类型	        范围	            用途	                    问题
    国标码	0x21~0x7E 即33~126	    汉字的标准编码	        与ASCII码冲突,可能导致误解
    机内码	0xA1~0xFE	            计算机内部使用的汉字编码	避免冲突,明确区分汉字和ASCII


    为什么需要避免误解?
        场景:如果直接使用国标码,计算机在处理文本时可能会将汉字的一部分误认为是ASCII字符。
        示例:
            假设国标码为 4E4F(对应汉字“诺”)
            如果直接使用国标码,计算机可能会将其拆分为 4E 和 4F,分别对应ASCII字符 'N' 和 'O',从而导致错误


包含汉字的数量最多的是:UTF-8


特性	        	无损压缩	                                   有损压缩
还原性	            可完全还原	                                   不可逆
压缩比	            较低(2:1~5:1)	                               高(10:1~100:1)
适用场景	        文本、代码、精密数据	                           多媒体、实时通信
文件类型举例    	ZIP、GIF、PNG、FLAC、Huffman霍夫曼编码、LZW	   JPEG、MP3、MP4、AAC、WebP


ASCII码针对的编码是:字符(不是汉字信息编码)


在GB2312编码中,每个汉字由两个字节表示
为了与ASCII字符区分(ASCII字符的最高位为0),GB2312规定这两个字节的最高位都设置为1


UNICODE 编码方式能够表示的汉字数量大约为:20000 以上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘鑫磊up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值