计算机有关数的知识,[转载]计算机基础-有关数及编码的知识

计算机中有关数及编码的知识  1.计算机是智能化的电器设备

计算机就其本身来说是一个电器设备,为了能够快速存储、处理、传递信息,其内部采用了大量的电子元件,在这些电子元件中,电路的通和断、电压高低,这两种状态最容易实现,也最稳定、也最容易实现对电路本身的控制。我们将计算机所能表示这样的状态,用0,1来表示、即用二进制数表示计算机内部的所有运算和操作。

2.二进制数的运算法则

二进制数运算非常简单,计算机很容易实现,其主要法则是:0+0=0 0+1=1 1+0=1 1+1=0 0*0=0 0*1=0

1*0=0 1*1=1

由于运算简单,电器元件容易实现,所以计算机内部都用二进制编码进行数据的传送和计算。

3.十进制与二进制、八进制、十六进制数之间的相互转换

(1)数的进制与基数

计数的进制不同,则它们的基数也不相同,如表所示。

进制

基数

特点

说明

十进制

0,1,2,...,9

逢十进一

如9+1=10,二进制则为1010,八进制为12,表示为16进制则为A

二进制

0 ,1

逢二进一

如二进制数10111111,表示为八进制为277,表示为16进制为BF

八进制

0,1,2,3,4,5,6,7

逢八进一

如十进制7,表示为八进制为7,表示为二进制则为111

十六进制

0,1,2,...,9,A,B,C,D,E,F

逢十六进一

如十进制15,表示为16进制则为F,表示为二进制则为1111

(2)数的权

不同进制的数,基数不同,每位上代表的值的大小(权)也不相同。例如:999.99这个数可以写为;

999.99=9×102 + 9×101 +

9×100 + 9×10-1 + 9×10-2

其中,每个位权由基数的n次幂来确定。在十进制中,整数的位权是100(个位)、101(十位)、102(百位)等等;小数的位权是10-1(十分位)、10-2(百分位)等等。上式称为按位权展开式。再如:

(219)10=2*102+1*101+9*100

(11010)2=1*24+1*23+0*22+1*21+1*20

(273)8=2*82+7*81+3*80

(27AF)16=2*163+7*162+10*161+15*160

(3)十进制数转换任意进制

1) 将十进制整数除以所定的进制数,取余逆序。

(39)10=(100111)2

(245)10=(365)8

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

2)将十进制小数的小数部分乘以进制数取整,作为转换后的小数部分,直到为零或精确到小数点后几位。

如:(0.35)10=(0.01011)2

(0.125)10=(0.001)2

(4)任意进制的数转换为十进制

按权值展开:

如:(219)10=2*102+1*101+9*100

(11010)2=1*24+1*23+0*22+1*21+1*20=26

(273)8=2*82+7*81+3*80=187

(7AF)16=7*162+10*161+15*160=1867

(5)八进制、十六进制数与二进制数的互相转换

(1)八进制转换为二进制:将八进制数的每一位展开为三位二进制码(不够三位,在前面补零),然后顺次相连即得,如:

(356)8=(011101110)2=(11101110)2

(2)十六进制转换为二进制:将十六进制数的每一位展开为四位二进制码(不够四位,在前面补零),然后顺次相连即得,如:

(356)16=(001101010110)2=(1101010110)2

二进制转换为八进制、十六进制的方法则恰好与此相反……

二进制转换为十进制的方法除按权展开式的计算法外还可以用如下方法进行:

二进制:  ( 1 1 0 0 1 1 1 0 1 )

对应位的十进制值: ……128

64 32 16 8 4 2 1

结果=各位二进制码与对应位的十进制值的乘积的累加……

4.数的定点与浮点表示

在计算机中,用二进制表示一个带小数点的数有两种方法,即定点表示和浮点表示。所谓定点表示,就是小数点在数中的位置是固定的;所谓浮点表示,就是小数点在数中的位置是浮动的。相应地,计算机按数的表示方法不同也可以分为定点计算机和浮点计算机两大类。

1)定点表示

通常,对于任意一个二制数总可以表示为纯小数或纯整数与一个2的整数次幂的乘积。例如,二进制数N可写成

N=2P×S

其中,S称为数N的尾数;P称为数N的阶码;2称为阶码的底。尾数S表示了数N的全部有效数字,阶码P确定了小数点位置。注意,此处P、S都是用二进制表示的数。当阶码为固定值时,称这种方法为数的定点表示法。这种阶码为固定值的数称为定点数。

符号

尾数 S

如假定P=0,且尾数S为纯小数时,这时定点数只能表示小数。

如假定P=0,且尾数S为纯整数时,这时定点数只能表示整数。

定点数的两种表示法,在计算机中均有采用。究竟采用哪种方法,均是事先约定的。如用纯小数进行计算时,其运算结果要用适当的比例因子来折算成真实值。在计算机中,数的正负也是用0或1来表示的,“0”表示正,“1”表示负。定点数表示方法如下:假设一个单元可以存放一个8位二进制数,其中最左边第一位留做表示符号,称为符号位,其余七位,可用来表示尾数。

例如,两个8位二进制数-0.1010111和+0.1010111在计算机中的定点表示形式为:11010111和01010111。

具有n位尾数的定点机所能表示的最大正数为0.1111……1(n个1),即为1-2-n。其绝对值比1-2-n大的数,巳超出计算机所能表示的最大范围,则产生所谓的“溢出”错误,迫使计算机停止原有的工作.转入“溢出”错误处理。

具有n位尾数的定点机所能表示的最小止数为:0.0000……1(n-1个0),即为2-n,计算机中小于此数的即为0(机器零)。

因此,n位尾数的定点机所能表不的数N的范围是:

2-n <= N <=

1-2-n。

由此可知,数表示的范围不大,参加运算的数都要小于1,而且运算结果也不应出现大于1或等于1的情况,否则就要产生“溢出”错误。因此.这就需要在用机器解题之前进行必要的加工,选择适当的比例因子,使全部参加运算的数的中间结果都按相应的比例缩小若干倍而变为小于1的数,而计算的结果又必须用相应的比例增大若干倍而变为真实值。

2)浮点表示

如果数N的阶码可以取不同的数值,称这种表示方法为数的浮点表示法。这种阶码可以浮动的数称为浮点数。这时,

N=2P×S

其中,阶码P用二进制整数表示,可为正数和负数。用一位二进制数Pf表示阶码的符号位当Pf=0时,表示阶码为正,当Pf=1时.表示阶码为负。尾数S,用Sf表示尾数的符号,Sf=0表示尾数为正;Sf=1表示尾数为负。浮点数在计算机中的表示形式如下:

Pf阶码尾数Sf尾数

如二进制数2+100*0.1011101(相当于十进制数11.625),其浮点数表示为:010001011101

5、机器数的种类和表示方法

在机器中表示带符号的数有三种表示方法:原码、反码和补码。为了运算带符号数的方便,目前实际上使用的是补码;而研究原码与反码是为了研究补码。

(1)原码

所谓数的原码表示,即符号位用0表示正数本身。例如:对于正数 X=+105的原码表示为;

[X]原 =0 1 1 0 1 0 0 1

符号位 数值本身

对于0,可以认为它是(+0),即[+0]原

=00000000,也可以认为它是(-0),即[-0]原 =10000000。

对于八位二进制来说,原码可表示的范围为+(127)D—-(127)D。

原码表示简单易懂,而且与真值的转换很方便,但采用原码表示在计算机中进行加减运算时很麻烦。如进行两数相加,必须先判断两个数的符号是否相同。如果相同,则进行加法,否则就要做减法。做减法时,还必须比较两个数的绝对值的大小,再由大数减小数,差值的符号要和绝对值大的数的符号一致。要设计这种机器是可以的,但要求复杂而缓慢的算术电路使计算机的逻辑电路结构复杂化了。因此,采用简便的补码运算,这就引进了反码与补码。

(2)反码

1.正数的反码表示与其原码相同,即符号位用“0”表示正,数字位为数值本身。例如:[+O]反= 0

0000000,[+4]反= 0 0000100,[+31]反= 0

0011111,[+127]反= 0 11111111等。

2.负数的反码是将它的正数按位(包括符号位在内)取反而形成的。例如与上述正数对应的负数的反码表示如下:[-O]反=

1 1111111,[-4]反= 1 1111011,[-31]反= 1

1100000,[+127]反= 1 0000000等。

8位二进制数的反码表示有如下特点:

(1)“0”的反码有两种表示法:00000000表示+0,11111111表示-0。

(2)8位二进制反码所能表示的数值范围为+127D—-127D。

(3)当一个带符号数用反码表示时,最高位为符号位,若符号位为0(即正数)时,后面的7位为数值部分,若符号位为1(即负数)时,一定要注意后面7位表示的并不是此负数的数值,而必须把它们按位取反以后,才得到此7位的二进制数值。例如一个8位二进制反码表示的数10010100B。它是一个负数,但它并不等于-20D,而应先将其数字位按位取反,然后才能得出此二进制数反码所表示的真值。

(3)补码

微机中都是采用补码表示法,因为用补码法以后,同一加法电路既可以用于有符号数相加,也可以用于无符号数相加,而且减法可用加法来代替,从而使运算逻辑大为简化,速度提高,成本降低。

为了理解补码的意义,先举一个钟表对时的例子。

若标准时间是6点整,而有一只钟停在10点整。要把钟校准到6点整,可以倒拨4格,即10-4=6,也可以顺拨8格,这是因为时钟顺按时,到12点就从0重新开始计时,相当于自动丢失一个数12,即10十8=12(自动丢失)十6=6。

这个自动丢失的数(12)是一个循环计数系统中所表示的最大数,称之为“模”。由此可以看出,对于一个模数为12的循环计数系统来说,10减4与10加8是等价的,或者说,(-4)与(+8)对模12互为补数。这可以用数学式表示为:

10-4=10+8 (Mod12)

或 —4=十8 (Mod2)

Mod12表示以12为模数。当等式两边同除以模12,它们的余数相同,故上式在数学上称为同余式。和(-4)与(+8)的同余相仿,(一5)与(十7)、(一6)与(十6)、(一7)与(十5)等等也都同余,或互为补数。不难看出,一个负数的补数必等于模加上该负数(或模减去该负数的绝对值)。由此可以推论:对于某一确定的模,某数减去绝对值小于模的另一数,总可以用某数加上“另一数的负数与其模之和”(即补数)来代替。所以,引进了补码以后,减法就可以转换为加法了。

不过在这里请注意,在模为12的情况下求补数时,还是不可避免地要做减法,因为计算“另—数的负数与其模之和”时,实际上是做减法。但是,当把上述推论应用到二进制运算时,在求2的补码(以后在二进制运算中简称补码)的过程中可以不用减法而由另一途径能很方便地找到,这样,就可以真正实现把二进制减法转换为加法。

现在我们来说明微机中补码的概念。

例如,在字长为8位的二进制数制中,其模为28=256D。若有:

64一10=64十(-10)=64十[256-10]=64十246=256十54=54

01000000 64 01000000 64

-00001010 -10 +11110110 +246

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

00110110 54 100110110 54

可见,在字长为8位(模28)的情况下,(64—10)与(64十246)的结果是相同的。所以,(一10)与(十246)同余或互为补数。而246D=11110110B就是上述(一10)的补码表示。由于利用了补码的概念,把上述的负数表示为它的补码,从而把减法转换为加法。实际上,对所有的负数(-X)的补码都可由棋28-X来得到。但关键在以二进制数表示时,可利用把与负数对应的正数连同符号位按位取反再加1这样简便的方法来求该负数的补码,避免了求补码过程中的减法。这使2的补码的运算具有实用价值。

一般地说,对于n位二进制数,某数X的补码总可以定义为:[X]补=2n十X。

下面,我们来讨论避免做减法运算的补码表示法。

1.正数的补码

正数的补码与其原码相同,即符号位用“0”表正,其余数字位表示数值本身。

[十4]补 =00000100

[十31]补 =00011111

[十127]补 = 01111111

2.负数的补码

负数的补码表示为它的反码加1(即在其低位加1)。例如

[一4]补 = 1 1111100

[—31]补 = 1 1100001

[一127]补 = 1 0000001

8位二进制数补码表示有如下特点:

(1)[十0]补=[一0]补=00000000

(2)8位二进制补码所能表示的数值为+127—-128。

(3)当一个带符号数用8位二进制补码表示时.最高位为符号位。若符号位为“0”(即正数)时,其余7位即为此数的数值本身;但当符号位为“1”(即负数)时,一定要注意其余7位不是此数的数值,而必须将它们按位取反,且在最低位加1,才得到它的数值。

例如,一个补码表示的数[x]补=10011011B,它是一个负数。但它并不等于-27D,它的数值为:将数字为0011011按位取反得到1100100,然后再加1,即为1100101。故

X=-1100101=-101D

5.ASCII编码

由于计算机是电器设备,计算机内部用二进制数,这样对于从外部输入给计算机的所有信息必须用二进制数表示,并且对于各种命令、字符等都需要转换二进制数,这样就牵涉到信息符号转换成二进制数所采用的编码的问题,国际上统一用美国标准信息编码(ASCII)它可用7位二进制数表示,占一个字节,它的最高位为0。因此基本的ASCII字符集有128个如:

0-9——48-57——00110000-...

A-Z——65-90——01000001-...

a-z——97-122——01100000-...

6.汉字编码与汉字输入法

(1)机内码

ASCII码不能表示汉字,因此要有汉字信息交换码,我国国家标准是GB2312,它也被称作国标码。和ASCII码类似,但ASCII码长度为—个字节,而国标码长度为两个字节。同时,为了与西文ASCII字符相区别,其中每一个字节的最高位均为1。

在国标编码表中,任意一个图形字符(包括汉字和符号)都采用两个字节表示,每个字节用七位二进制编码。以第一字节为行,第二字节为列,排成一张94×94的图形字笛代码表。通常将行称为区,由第一字节标识;列称为位,由第二字节标识。表中任何一个图形字符的位置可由区号与位号唯一确定,这就是国标区位码,简称区位码。

国标码共收集汉字和图形符号7445个。其中,汉字6763个,分为两级:第一级为常用汉字,按汉字的拼音顺序排列,同音字以笔形顺序横(一)、竖(|)、撇(J)、捺(、)、折(乙),起笔相同按第二笔,依次类推。包含3755个汉字,置于16—55区,第二级汉字包括一般汉字3008个,按部首顺序排列,同笔画数的字以笔形顺序横(一)、竖(|、撇(J)、挠(、)、折(乙)为序,起笔相同按第二笔,依次类推,置于56—87区。此外,国标码中收集有一般字符

682个.置于1—9区。用户自定义的专用汉字和符号可置于10—15区和88—94区。例如汉字“啊”,它的区位码为十进制16、01,位于16区01位。对应的二进制编码第一字节为:00010000,第二字节为:00000001。它的国标码对应的二进制数第一字节为:00110000,第二字节为:00100001,相应的十六进制数为3021H。可见,国标码=区位码十2020H。

(2)汉字输入码(外码)

目前,汉字输入法主要有键盘输入、文字识别和语音识别。键盘输入法是当前汉字输入的主要方法。它大体可以分为:

流水码:如区位码、电报码、通信密码,优点:重码率少,缺点:难于记忆;

音码:以汉语拼音为基准输入汉字,优点是容易掌握,但重码率高;

形码:根据汉字的字型进行编码,优点重码少,但不容易掌握;

音形码:将音码和形码结合起来,能减少重码率,同时提高汉字输入速度。

(3)汉字字模

供计算机输出汉字(显示和打印)用的二进制信息叫汉字字形信息也称字模。通用汉字字模点阵规格有16*16,24*24,32*32,48*48,64*64,每个点在存储器中用一个二进制位((bit)存储,如一个16*16点阵汉字需要32个字节的存储空间。

思考与练习:

1、试将十进制数111.11转换为二进制、八进制、十六进制数。

2、试将二进制数110100110.110101转换为十六进制数。

3、与十六进制数BB等值的十进制数是____。

4、已知两个二进制数的绝对值分别为:X=0000111,Y=0010011,试求下列三种情况下两数的补码之和。

(1)X、Y均为正数;

(2)X为正数,Y为负数;

(3)X、Y均为负数。

5、已知X=-1111111,Y=-0000010,求两数的补码之和。试用十进制加法检查一下,是否有问题。若有问题,是什么原因?

6、某计算机字长为8位,它用补码、原码或反码来表示带符号的二进制整数(最高一位为符号位),则机器代码11111111所表示的十进制真值分别为

____、 ____ 、____ 。①128 ②0 ③1 ④-1 ⑤255 ⑥-255 ⑦127

⑧-127 7、中文“海”字的区位码是2603,它的机内码是 ____ 。 ①B603 ②A6A3 ③BAA3

④BAB3

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值