2、机器数的表示方法
a、原码
1、定义:正数的符号位用0表示,负数的符号位用1表示,数值部分用二进制形式表示,称为该数的原码。
比如: 则
X=+81 (X)原 =0 1010001
Y=-81 (Y)原 =1 1010001
符号位 数值
2、用原码表示一个数简单、直观、方便。但不能用它对两个同号数相减或两个异号数相加。
比如:将
十进制数“+36”与“-45”的原码直接相加:
X=+36 (X)原 =00100100
Y=-45 (Y)原 =10101101
而
0 0 1 0 0 1 0 0……(+36)10+) 1 0 1 0 1 1 0 1……(-45)10
1 1 0 1 0 0 0 1……(-81)10
这显然是不对的。
b、反码
定义:正数的反码和原码相同,负数的反码是对该数的原码除符号位外各位取反,即“0”变“1”,“1”变“0”。
例如:X=+81,Y=-81
X)原 =0 1010001 (X)反= 0 1010001
Y)原 =1 1010001 (Y)反= 1 0101110
符号位 数值 符号位 数值
c、补码
1、定义:正数的补码与原码相同,负数的补码是对该数的原码除符号外各位取反,然后加1,即反码加1。
比如:X=+81,Y=-81 (X)原=(X)反=(X)补=01010001
(Y)原=11010001
(Y)反=10101110
(Y)补=10101111
2、计算机中,加减法基本上都采用补码进行运算,并且加减法运算都可以用加法来实现。
比如:计算十进制数:36-45,可 写成:36+(-45),即
(36)10 -(45)10 =(36)10+(-45)10
(36)原 =(36)反 = (36)补
= 00100100
(-45)原 = 10101101
(-45)反 = 11010010
(-45)补 = 11010011
而
0 0 1 0 0 1 0 0……(+36)10
+) 1 1 0 1 0 0 1 1……(-45)10
1 1 1 1 0 1 1 1……(-9)10
结果正确。
三、字符编码
所谓字符编码就是规定用怎样的二进制编码来表示文字和符号。它主要有以下几种:1、BCD码(二--十进制码);2、ASCII码;3、
汉字编码。
1、BCD码(二--十进制码):
把十进制数的每一位分别写成
二进制数形式的编码,称为二--十进制编码或BCD编码。BCD编码方法很多,但常用的是
8421编码:它采用4 位二进制数表示1位十进制数,即每一位十进制数用四位二进制表示。这4位二进制数各位权由高到低分别是23、22、21、20,即8、4、2、1。这种编码最自然,最简单,且书写方便、直观、易于识别。
比如:十进制数1998的8421码为:
0001 1001 1001 1000
十进制: 1 9 9 8
8421码: 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0
位权: 8 4 2 1 8 4 2 1 8 4 2 1 8 4 2 1
思考:
1、一个十进数的BCD码如何转换成十进制数?
2、一个十进制数的BCD码是该数的 二进制数吗?
3、一个十进制数的BCD码与二进制数之间如何相互转换?
2、ASCII码
ASCII码是
计算机系统中使用得最广泛的一种编码(读作阿斯克伊码)。ASCII码虽然是美国国家标准,但它已被
国际标准化组织(ISO)认定为国际标准。ASCII码已为世界公认,并在世界范围内通用。ASCII码有7位版本和8位版本两种。国际上通用的是7位版本。7位版本的ASCII码有128个元素,其中通用控制字符34个,
阿拉伯数字10个,大、小写英文字母52个,各种标点符号和运算符号32个。
比如:“A”的ASCII码值为:1000001,即十进制的65;“a”的ASCII码值为:1100001,即十进制的97;“0”的ASCII码值为:0110000,即十进制的48。
3、汉字编码
我国用户在使用计算机进行信息处理时,都要用到汉字:汉字的输入,输出以及汉字处理。这就需要对汉字进行编码。通常汉字有两种编码:
国标码和机内码。
a、国标码
计算机处理汉字所用的编码标准是我国于1980年颁布的国家标准(GB2312-80),是国家规定的用于汉字编码的依据,简称国标码。
国标码规定:用两个字节表示一个汉字字符。在国标码中共收录汉字和图形符号7445个。
国标码本身也是一种汉字输入码。通常称为区位输入法。
b、机内码
机内码是指在计算机中表示一个汉字的编码。
机内码是一种机器内部的编码,其主要作用是作为汉字信息交换码使用:将不同系统使用的不同编码统一转换成国标码 ,使不同的系统之间的汉字信息进行交换。
正是由于机内码的存在,输入汉字时就允许用户根据自己的习惯使用不同的
汉字输入法,比如:五笔字型、自然码、智能拼音等,进入系统后再统一转换成机内码存储。
(4)汉字编码
西文是拼音文字,基本符号比较少,编码比较容易,因此,在一个计算机系统中,输入、内部处理、存储和输出都可以使用同一代码。汉字种类繁多,编码比拼音文字困难,因此在不同的场合要使用不同的编码。通常有4种类型的编码,即输入码、国标码、内码、字形码。
① 输入码
输入码所解决的问题是如何使用西文标准键盘把汉字输入到计算机内。有各种不同的输入码,主要可以分为三类:数字编码、拼音编码和字编型码。
● 数字编码。就是用数字串代表一个汉字,常用的是国标
区位码。它将国家标准局公布的6763个两级汉字分成94个区,每个区分94位。实际上是把汉字表示成
二维数组,区码、位码各用两位十进制数表示,输入一个汉字需要按4次键。数字编码是惟一的,但很难记住。比如“中”字,它的区位码以十进制表示为5448(54是区码,48是位码),以十六进制表示为3630(36是区码,30是位码)。以十六进制表示的区位码不是用来输入汉字的。
● 拼音编码。是以汉字读音为基础的输入方法。由于汉字同音字太多,输入后一般要进行选择,影响了输入速度。
● 字型编码。是以汉字的形状确定的编码,即按汉字的笔画部件用字母或数字进行编码。如五笔字型、表形码,便属此类编码,其难点在于如何拆分一个汉字。
② 国标码
又称为汉字交换码,在计算机之间交换信息用。用两个字节来表示,每个字节的最高位均为0,因此可以表示的汉字数为214=16384个。将汉字区位码的高位字节、低位字节各加十进制数32(即
十六进制数的20),便得到国标码。例如“中”字的国标码为8680(十进制)或7468(十六进制)。这就是国家标准局规定的GB2312—80信息交换用汉字编码集。
③ 内码
汉字内码是在设备和信息处理系统内部存储、处理、传输汉字用的代码。无论使用何种输入码,进入计算机后就立即被转换为机内码。规则是将国标码的高位字节、低位字节各自加上128
为了统一表示世界各国的文字,1993年国际标准化组织公布了“通用多八位编码字符集”的国际标准ISO/IEC 10646,简称UCS(Universal Code Set),它为包括汉字在内的各种正在使用的文字规定了统一的编码方法。该标准使用4个字节来表示一个字符。其中,一个字节用来编码组,因为最高位不用,故总共表示128个组。一个字节编码平面,总共有256个平面,这样,每一组都包含256个平面。在一个平面内,用一个字节来编码行,因而总共有256行。再用一个字节来编码字位,故总共有256个字位。一个字符就被安排在这个编码空间的一个字位上。例如ASCII字符“A”,它的ASCII为41H,而在UCS中的编码则为00000041H,即位于00组、00面、00行的第41H字位上。又如汉字“大”,它在GB2312中的编码为3473H,而在UCS中的编码则为00005927H,即在00组、00面、59H行的第27H字位上。4个字节的编码足以包容世界上所有的字符,同时也符合现代处理系统的体系结构。
④ 字形码
表示汉字字形的字模数据,因此也称为字模码,是汉字的输出形式。通常用点阵、矢量函数等表示。用点阵表示时,字形码指的就是这个汉字字形点阵的代码。根据输出汉字的要求不同,点阵的多少也不同。简易型汉字为16�0�716点阵、提高型汉字为24�0�724点阵、48�0�748点阵等。现在我们以24�0�724点阵为例来说明一个汉字字形码所要占用的内存空间。因为每行24个点就是24个二进制位,存储一行代码需要3个字节。那么,24行共占用3�0�724=72个字节。计算公式:每行点数/8�0�7行数。依此,对于48�0�748的点阵,一个汉字字形需要占用的存储空间为48/8�0�748=6�0�748=288个字节。
(十进制)或80(十六进制)。例如,“中”字的内码以十六进制表示时应为F4E8。这样做的目的是使汉字内码区别于西文的ASCII,因为每个西文字母的ASCII的高位均为0,而汉字内码的每个字节的高位均为1。