纬图虚拟仪器论坛

 找回密码
 立即注册
搜索
查看: 3863|回复: 0

第四课:计算机中数的表示及运算

[复制链接]
发表于 2012-8-7 21:00:05 | 显示全部楼层 |阅读模式
本帖最后由 wdluo 于 2012-8-7 21:28 编辑

第四课:计算机中数的表示及运算
数字:
    谈到数字,有很多同学可能会觉的很可笑,数字?不就是1234……..这些吗?是的,在日常的生活当中,我们用的一般都是十进制,但在计算机中,它只能识别二进制数,所以在这里我还得跟大家共同分析一下:
1、十进制:
    十进制就是基数为“十”,所使用的数码为0~9共10个数字。逢十进一。是我们每天都会运用到的,在这里就不多谈了。
2、二进制:
    二进制的基数为“二”,其使用的数码只有0和1两个。在计算机中容易实现,在常用的的实现方式中如:可以用电路的高电平表示1,低电平表示0;或者三极管截止时集电极的输出表示1,导通时集电极输出表示0。
3、十六进制:
    由于二进制位数太长,不易记忆和收写,所以人们又提出了十六进制的书写形式。我们在汇编语言中多数用十六进制。

二进制,十进制,十六进制数码对照
十进制
8421BCD码
二进制
十进制
8421BCD码
二进制
1
1
0001
10
A
1010
3
3
0011
12
C
1100
5
5
0101
14
E
1110
7
7
0111
16
10
10000
    计算机只识别和处理数字信息,数字是以二进制数表示的;它易于物理实现,同时,资料存储、传送和处理简单可靠;运算规则简单,使逻辑电路的设计、分析、综合、方便,使计算器具有逻辑性。
一、 用数制及转换
1、各种进位计数及其表示方法
数字符号:0、1、2、……9 ——数码。数码的个数——基数。
进位规则:逢十进一
例如,十进制数,10个数码;采用“逢十进一”
30681 = 3×104+0×103+6×102+8×101+1×100
例如,二进制数,2个数码,采用“逢二进一”
(11010100)2 = 1×27+1×26+0×25+1×24+0×23+1×22+0×21+0×20
总之,N进制数,N个数码,“逢N进一”
2、数制之间的转换
    任意进制之间相互转换,整数部分和小数部分必须分别进行,
十进制转换成二进制——短除取余法

十进制小数转换成二进制小数——乘2取整法。
二进制转换成十进制——展开求和法。
(101101)2 = 1×25+0×24+1×23+1×22+0×21+1×20
= 32+0+8+4+0+1
= 45
二进制转换成八进制、十六进制与此类似。

二、 机器数及其编码
1、 机器数与真值
机器只认识二进制数:0、1。
这是因为,电路状态常有两个,如通、断;高电平、低电平;…可用0、1表示。
这种0、1、0、1…1在机器中的表现形式——机器数。一般为8位。
2、 机器数的编码及运算
    对带符号数而言,有原码、反码、补码之分,计算机内一般使用补码。
1) 原码
将数“数码化”,原数前“+”用0表示,原数前“-”用1表示,数值部分为该数本身,这样的机器数叫原码。
设X——原数;则[X]原 = X(X 0)
[X]原 = 2n-1 – X (X 0),n为字长的位数。
如,[+3]原 = 00000011B
[-3]原 = 27 - (-3) = 10000011B
0有两种表示方法:00000000 +0
10000000 -0
原码最大、最小的表示:+127、-128
2) 反码
规定正数的反码等于原码;负数的反码是将原码的数值位各位取反。
[X]反 = X (X 0)
[X]反 =(2n –1)+ X (X 0)
如,[+4]反 = [+4]原 = 00000100 B
[-4]反 = (28 –1)+(-5) = 11111111- 00000101 = 11111010 B
反码范围:-128 ~ +127
两个0; +0 —— 00000000 B
-0 —— 11111111 B
3) 补码
补码的概念:现在是下午3点,手表停在12点,可正拨3点,也可倒拨9点。即是说-9的操作可用+3来实现,在12点里:3、-9互为补码。
运用补码可使减法变成加法。
规定:正数的补码等于原码。
负数的补码求法:1)反码 + 1
2)公式:[X]补 = 2n + X (X<0)
如,设X = - 0101110 B , 则[X]原 = 10101110 B
则[X]补 = [X]反 + 1 = 11010001 + 00000001 = 11010010 B
如,[+6]补 = [+6]原 = 00000110 B
[-6]补 = 28 + (-6) = 10000000 – 00000110 = 11111010 B
8位补码的范围 –128 ~ +127。
0 的个数:只一个,即00000000
而10000000 B是-128的补码。
原码、反码、补码对照表:表1-2 P10
4)补码的运算
当X≥0时,[X]补= [X]反=[X]原
[ [X]补]补 = [X]原
[X]补+ [Y]补 = [ X+Y ]补
[ X-Y ]补= [ X+(-Y)]补
例:已知 X=52 Y=38 求X-Y
计算机在做算术运算时,必需检查溢出,以防止发生错误

5)运算的溢出问题
    资料字长(位数)有一定限制,所以资料的表示应有一个范围。
如字长8位时; 补码范围-128~+127
若运算结果超出这个范围,便溢出。
例:
错:两个负数相加和为正数。
可见:结果正确(无溢出)时,Cs+1 = Cs
结果错误(溢出)时,Cs+1 ≠ Cs
溢出判断:溢出 = Cs+1 Cs(即结果是0为无溢出;1为有溢出)
1、 十进制数的编码
对机器:二进制数方便,
对人 :二进制数不直观,习惯于十进制数。
在编程过程中,有时需要采用十进制运算,但机器不认识十进制数。
怎么办?
可以将十进制的字符用二进制数进行编码:

这叫做二进制数对十进制编码——BCD码。
上述每4位二进制数表示一个十进制字符,这4位中各位的权依次是:
8、4、2、1——8421 BCD码。
BCD码的运算:

(1)BCD码加法规则
两个BCD数相加时,“某位”的和小于10则保持不变;
两个BCD数相加时,“某位”的和大于9,则和数应加6修正。
(2)BCD码减法规则
两个BCD数相减时,“某位”的差未发生借位,则差数保持不变;
两个BCD数相减时,“某位”发生了借位,其差应减6修正。
这里“某位”指BCD数中的“个位”、“十位”、“百位”、……

三、 字符信息的表示
计算机能识别0、1、0、1、……;这些0、1、0、1、……有的代表
数值,有的仅代表要处理的信息(如字母、标点符号、数字符号等文字符号),所以,计算机不仅要认识各种数字,还要能识别各种文字符号。人们事先已对各种文字符号进行二进制数编码:
如,美国信息交换标准码——ASCII码,用一个字节表示一个字符。
低7位是字符的ASCII码值;最高位是通信时的校验位。

思考题:真值与码值有何区别?原码、反码、补码三者之间如何换算?


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|纬图虚拟仪器

GMT+8, 2024-12-22 11:59 , Processed in 2.540728 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表