国标码与机内码
输⼊码、区位码、国标码与机内码
国家标准局1980年颁布的《信息交换⽤汉字编码字符集"基本集》(代号为GB2312 80)规定的汉字交换码作为国家标准汉字编码。 GB2312 80中共有7445个字符符号:汉字符号6763个⼀级汉字3755个(按汉语拼⾳字母顺序排列)⼆级汉字3008个(按部⾸笔划顺序排列)⾮汉字符号682个 GB2312 80规定,我们知道,键盘是当前微机的主要输⼊设备,;输⼊码就是使⽤英⽂键盘输⼊汉字时的编码。⽬前,我国已推出的输⼊码有数百种,但⽤户使⽤较多的约为⼗⼏种,按输⼊码编码的主要依据,⼤体可分为顺序码、⾳码、形码、⾳形码四类,如“保” 字,⽤全拼,输⼊码为码为“BAO”,⽤区位码,输⼊码为“1703”,⽤五笔字型则为“WKS”。
计算机只识别由0、1组成的代码,ASCII码是英⽂信息处理的标准编码,汉字信息处理也必须有⼀个统⼀的标准编码。汉字交换码(国标码)主要⽤于汉字信息交换,我国国家标准局于1981年5⽉颁布了《信息交换⽤汉字编码字符集——基本集》,代号为GB2312-80,共对6763个汉字和682个图形字符进⾏了编码,其编码原则为:汉字⽤两个字节表⽰,每个字节⽤七位码(⾼位为0),;所有的国标码汉字及符号组成⼀个94⾏94列的⼆维代码表中。在此⽅阵中,每⼀⾏称为⼀个"区",每⼀列称为⼀个"位"。这个⽅阵实际上组成⼀个有94个区(编号由01到94),每个区有94个位(编号由01到94)的汉字字符
集。每两个字节分别⽤两位⼗进制编码,前字节的编码称为区码,后字节的编码称为位码,此即区位码,其中,⾼两位为区号,低两位为位号。这样区位码可以唯⼀地确定某⼀汉字或字符;反之,任何⼀个汉字或符号都对应⼀个唯⼀的区位码,没有重码。如“保”字在⼆维代码表中处于17区第3位,区位码即为“1703 ”。
ascii是几位二进制编码国标码并不等于区位码,它是由区位码稍作转换得到,其转换⽅法为:先将⼗进制区码和位码转换为⼗六进制的区码和位码,;这样就得了⼀个与国标码有⼀个相对位置差的代码,;再将这个代码的第⼀个字节和第⼆个字节分别加上20H,就得到国标码。如:“保” 字的国标码为3123H,它是经过下⾯的转换得到的:1703D->1103H->+20H->3123H。
国标码是汉字信息交换的标准编码,但因其前后字节的最⾼位为0,与ASCII码发⽣冲突,如“保” 字,国标码为31H和23H,⽽西⽂字符“1”和“#”的SCII也为31H和23H,现假如内存中有两个字节为31H和23H,;这到底是⼀个汉字 ,还是两个西⽂字符“1”;和“#”?于是就出现了⼆义性,显然,国标码是不可能在计算机内部直接采⽤的,于是,;汉字的机内码采⽤变形国标码,其变换⽅法为:将国标码的每个字节都加上128,即将两个字节的最⾼位由0改1,其余7位不变,如:由上⾯我们知道,“保”字的国标码为3123H,前字节为00110001B,后字节为00100011B,⾼位改1为10110001B和10100011B 即为B1A3H,因此, 字的机内码就是B1A3H;。
显然,汉字机内码的每个字节都⼤于128,这就解决了与西⽂字符的ASCII码冲突的问题。
如上所述,汉字输⼊码、区位码、;国标码与机内码都是汉字的编码形式,它们之间有着千丝万缕的联系,但其间的区别也是不容忽视的。
各数制之间的转换
我们⽤R表⽰任何数制的基数,讨论各数制之间的转换。
1.R进制数转换为⼗进制数
⼆进制、⼋进制和⼗六进制数转换为等值的⼗进制数,只要把它们⽤多项式表⽰并在⼗进制下进⾏计算,所得的结果就是⼗进制数。
2.⼗进制数转换为R进制数 ⼗进制数转换为等值的⼆进制、⼋进制和⼗六进制数,需要对整数部分和⼩数部分分别进⾏转换。其整数部分⽤连续除以基数R取余数的⽅法来完成,⼩数部分⽤连续乘以基数R取整数的⽅法来实现。
基数 基数 基数 基数 基数
⼗进制 10000 1000 100 10 1
⼆进制 16 8 4 2 1
⼋进制 4096 512 64 8 1
⼗六进制 65536 4096 256 16 1
3.⼆进制数与⼋进制数、⼗六进制数的转换
⼆进制数与⼋进制数的转换应以"3位⼆进制数对应1位⼋进制数"的原则进⾏。同理,因为24=16,则⼆进制数与⼗六进制数的转换应以"4位⼆进制数对应1位⼗六进制数"的原则进⾏。
⼆进制数的运算
在计算机中,⼆进制数的运算包括算术运算和逻辑运算。
1.⼆进制数的算术运算
(1)⼆进制数加法 加法原则:逢⼆进⼀
(2)⼆进制数减法 减法原则:借⼀当⼆
(3)⼆进制数乘法 乘法原则:与算术乘法形式相同
(4)⼆进制数除法 除法原则:与算术除法形式相同
2.⼆进制数的逻辑运算
逻辑运算是以⼆进制数为基础的,逻辑变量只有两个,⽤来表⽰逻辑"真"和"假"。 (1)逻辑加法("或"运算) 运算符号:"+"或"∨" 运算规则:0+0=0;0+1=1;1+0=1;1+1=1;
(2)逻辑乘法("与"运算) 运算符号:"×"或"∧" 运算规则:0×0=0;0×1=0;1×0=0;1×1=1;
(3)逻辑"⾮"运算 运算符号:"-"%运算规则:A&-*=0时,A=1
五、数据类型及数据单位
1.数据的两种类型
计算机中的数据可概括分为两⼤类:数值型数据和字符型数据。所有的⾮数值型数据都要经过数字化后才能在计算机中存储和处理。
2.数据单位
在计算机中通常使⽤三个数据单位:位、字节和字。
位的概念是:最⼩的存储单位,英⽂名称是bit,常⽤⼩写b或bit表⽰。
⽤8位⼆进制数作为表⽰字符和数字的基本单元, 英⽂名称是byte,称为⼀字节。通常⽤⼤"B"表⽰。
1B(字节)=8b(位)
1KB(千字节)=1024B(字节)
1MB(兆字节)=1024KB(千字节)
字长:字长也称为字或计算机字,它是计算机能并⾏处理的⼆进制数的位数。
六、字符编码与汉字编码
1.字符编码 ⽬前微型机中普遍采⽤的字符编码是ASCII码。它是⽤七位⼆进制数对127个字符进⾏编码,其中前32个是⼀些不可打印的控制符号。
2.汉字编码及字模信息
汉字有两种编码:国标码与机内码。
国标码是"中华⼈民共和国国家标准信息交换汉字编码",代号为"GB2312-80"。在国标码的字符集中,收集了⼀级汉字3755个,⼆级汉字3008个,图形符号682个,共7445个。⼀个汉字对应⼀个区位码,
由四位数字组成,前两位数字为区码(0~94),后两位数字为位码(0~94)。机内码是指汉字在计算机中的编码
汉字的机内码占两个字节,分别称为机内码的⾼位与低位。
它们与区位码的关系如下:
机内码⾼位=区码+A0H 机内码低位=位码+A0H
汉字字库是由所有汉字的字模信息构成的。⼀个汉字字模信息占若⼲字节,究竟占多少个字节由汉字的字形决定。 例如,如果⽤16×16点阵表⽰⼀个汉字,则⼀个汉字占16⾏,每⾏有16个点,在存储时⽤两个字节存放⼀⾏上16个点的信息,对应位为"0"表⽰该点为"⽩","1"表⽰该点为"⿊"。因此,⼀个16×16点阵的汉字占32个字节。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论