数字逻辑与计算机组成原理:第二章 数据的表示与运算
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字逻辑与计算机组成原理
第二章 数据的表示与运算
第一节 数的表示
一、无符号数和有符号数
1、无符号数:
没有符号的数,寄存器中的每一位都可用 来存放数据
机器字长为n位,无符号数的表示范围 为0~2n-1
反映无符号数的表示范围
8位 16 位
0 ~ 255 0 ~ 65535
有两种常用的无符号表示法: ◆ 非负数码:表示0或一个正数
(1) 定义
整数
0,x
2n > x ≥ 0
[x]反 = ( 2n+1 – 1) + x 0 ≥ x > 2n(mod 2n+1 1)
x 为真值
n 为整数的位数
如 x = +1101
x = 1101
[x]反 = 0,1101
[x]反 = (24+1 1) 1101 = 11111 1101
用 逗号 将符号位
= 1,0010
和数值部分隔开
小数 x
[x]反 = ( 2 – 2-n) + x
1>x≥ 0 0 ≥ x > 1(mod 2 2-n)
x 为真值 n 为小数的位数
如 x = + 0.1101
x = 0.1010
[x]反 = 0.1101
[x]反 = (2 2-4) 0.1010
= 1.1111 0.1010
有符号小数: +0.1011,在机器中表示为
-0.1011,在机器中表示为
第一节 数的表示
一、无符号数和有符号数 2、有符号数
有符号整数: +1101,机器中表示为
-1101, 机器中表示为
第一节 数的表示
一、无符号数和有符号数
★带“+”或“-”符号的数称为真值 ★机器编码中把符号“数字化”的数称为机 器数或机器码
1101
1010
8
1000
1011
1110
1011
9
1001
1100
1111
1100
余3循环 码
0010 0110 0111 0101 0100 1100 1101 1111 1110 1010
(4)逻辑异或: 按位求两个二进
制数的模2和(不带进位的按位加)
第二节 文字信息的编码与表示
一、数字的编码—BCD码
* BCD码(Binary-Coded Decimal)亦称二 进码十进数或二-十进制代码。 * 用4位二进制数来表示1位十进制数中的 0~9这10个数码。 * 是一种二进制的数字编码形式,用二进 制编码的十进制代码。
三、数值数据的表示
3、补码表示法
例:设计算机字长为8位
x=+0.1011B,[x]补=[x]原= 0.1011000B x= -0. 1110B,[x]原=1. 1110000B
[x]补=1.0001111B+……1B =1.0010000B
练习 求下列真值的补码
真值
[x]补
[x]原
x = +70 = 1000110 0, 1000110 0,1000110
x = 0.1101
[x]原 = 1 ( 0.1101) = 1 . 1101
x = + 0.1000000
[x]原 = 0 . 1000000
用 小数点 将符号 位和数值部分隔开
x = 0.1000000 [x]原 = 1 ( 0.1000000) = 1 . 1000000
三、数值数据的表示 1、原码表示法
3、补码表示法
正数的补码和原码相同 负数的反码是对该数的原码除符号位外的 各位按位取反,然后末位加1
补码定义
整数
[x]补 =
0,x 2n+1 + x
2n > x ≥ 0 0 > x ≥ 2n(mod 2n+1)
x 为真值
n 为整数的位数
如
x = +1010
[x]补 = 0,1010
用 逗号 将符号位 和数值部分隔开
n位非负数码的数值范围:0 ~2n-1(所有位都为1) ◆ 2的补码(简称补码):既能表示正数又能表示负数
n位数的数值范围: -2n-1 ~ 2n-1-1
8位二进制数的非负数码和补码表示的数值
二进制表示
非负数码
补码
0000 0000 0000 0001
…… 0111 1111 1000 0000 1000 0001
x = 1011000
[x]补 = 27+1 +( 1011000 ) = 100000000 1011000
1,0101000
补码定义
小数 [x]补 =
x
1>x ≥0
2 + x 0 > x ≥ 1(mod 2)
x 为真值
如 x = + 0.1110
x = 0.1100000
[x]补 = 0.1110
1010 + 1
10101 + 1 = 1,0110
当真值为 负 时,补码 可用 原码除符号位外 每位取反,末位加 1 求得
三、数值数据的表示
3、补码表示法
例:设计算机字长为8位
x=+1000B,[x]补=[x]原=00001000B x= -1001B, [x]原=10001001B
[x]补=11110110B+……1B
[x]补 =
1.0000
不能表示
x
1>x≥ 0
2+ x 0 > x ≥ 1(mod 2)
[ 1]补 = 2 + x = 10.0000 1.0000 = 1.0000
三种机器数的小结
➢ 最高位为符号位,书写上用“,”(整数)
或“.”(小数)将数值部分和符号位隔开 ➢ 对于正数,原码 = 补码 = 反码 ➢ 对于负数 ,符号位为 1,其 数值部分
用 小数点 将符号位 和数值部分隔开
= 1.0101
(2) 举例
例1 已知 [x]反 = 0,1110 求 x
解: 由定义得 x = + 1110
例2 已知 [x]反 = 1,1110 求 x
解: 由定义得
x = [x]反 (24+1 1)
= 1,1110 11111
例 3 求 0 的反码
= 0001
第一节 数的表示
二、数制及转换
数制(进位计数制):按进位的 原则进行计数
1、十进制 2、二进制 3、八进制 4、十六进制
第一节 数的表示
二、数制及转换
数制转换:
非十进制十进制 例2-1 十进制非十进制
例2-2(整数)除基取余法 例2-3(小数)整数部分用除法
小数部分用乘法
第一节 数的表示
三、数值数据的表示
例 2 求 x = 0 的原码 解: 设 x = +0.0000 [+0.0000]原 = 0.0000
x = 0.0000 [ 0.0000]原 = 1.0000
同理,对于整数
[+ 0]原 = 0,0000
∴ [+ 0]原 ≠ [ 0]原
[ 0]原 = 1,0000
原码的特点: 简单、直观
但是用原码作加法时,会出现如下问题:
例1:设计算机字长为8位,求下列数的原码
x=+1010B, [x]原=? x= -1010B, [x]原=? x=+0.1001B, [x]原=? x= -0.0101B, [x]原=?
三、数值数据的表示 1、原码表示法
解:根据原码的定义,可得下列数的原码
x=+1010B, [x]原=00001010B x= -1010B, [x]原=10001010B x=+0.1001B, [x]原=0.1001000B x= -0.0101B, [x]原=1.0101000B
原码除符号位外每位取反末位加 1 补码 原码除符号位外每位取反 反码
例 设机器数字长为 8 位(其中1位为符号位)
对于整数,当其分别代表无符号数、原码、补码和 反码时,对应的真值范围各为多少?
二进制代码
00000000 00000001 00000010
无符号数 对应的真值
0 1 2
原码对应 的真值
…… 1111 1111
0 1 …… 127 128 129 …… 255
0 1 …… 127 -128 -127 …… -1
无符号表示的数值
第一节 数的表示
一、无符号数和有符号数
2、有符号数 有效数字前有一个符号位, 正数用“0”表示,负数用“1”表 示
第一节 数的表示
一、无符号数和有符号数 2、有符号数
解: 设 x = + 0.0000
[+0.0000]反= 0.0000
x = 0.0000
[ 0.0000]反= 1.1111
同理,对于整数
[+0]反= 0,0000 [ 0]反= 1,1111
∴ [+ 0]反 ≠ [ 0]反
三、数值数据的表示
2、反码表示法
例:设计算机字长为8位,给出下列数的反码
1、原码表示法(带符号的绝对值表示)
字长为n位,最高位为符号位,正数 “0”,负数“1”;数值部分的n-1位用二进 制真值的绝对值来表示
第一节 数的表示
三、数值数据的表示
1、原码表示法(带符号的绝对值表示)
0,x 2n > x ≥ 0 整数 [x]原 = 2n x 0 ≥ x > 2n
x 为真值 n 为整数的位数
+0 +1 +2
补码对应 的真值
+0 +1 +2
反码对应 的真值
+0 +1 +2
…
…
…
…
…
01111111
127
10000000
128
10000001
129
+127 -0 -1
+127 -128 -127
+127 -127 -126
…
…
…
…
…
11111101
253
-125
11111110
254
-126
x = 70 = 1000110 1, 0111010 1,1000110
x = 0.1110
0.1110
0.1110
x = 0.1110
1.0010
1.1110
x = 0.0000 [+ 0]补 = [ 0]补 0.0000
0.0000
x = 0.0000
0.0000
1.0000
x = 1.0000 由小数补码定义
x=+1101B,[x]反=[x]原=00001101B x= -1101B, [x]原=10001101B
[x]反=11110010B x=+0.1010B, [x]反=[x]原=0.1010000B x= -0. 1001B, [x]原=1. 1001000B
[x]反=1.0110111B
三、数值数据的表示
x = +1110 x = 1110
[x]原 = 0 , 1110
用 逗号 将符号位 和数值部分隔开
[x]原 = 24 + 1110 = 1 , 1110
小数
x [x]原 = 1 – x
x 为真值
1>x≥0 0≥x> 1
如 x = + 0.1101
[x]原 = 0 . 1101
用 小数点 将符号 位和数值部分隔开
要求 数1 数2
实际操作 结果符号
加法 正 正
加
正
加法 正 负
减
可正可负
加法 负 正
减
可正可负
加法 负 负
加
负பைடு நூலகம்
能否 只作加法 ? 找到一个与负数等价的正数 来代替这个负数 就可使 减 加
三、数值数据的表示
2、反码表示法
正数的反码和原码相同 负数的反码是对该数的原码除符号位外的 各位按位取反
反码表示法
机器码分为原码、反码、补码
第一节 数的表示
二、数制及转换
计算机 的信息
控制信息 数据信息
数值信息 字符 非数值 汉字
信息
逻辑数据
所有信息在计算机内均用二进制数表示
第一节 数的表示
二、数制及转换
数制(进位计数制):按进位的 原则进行计数
数制
基数:数制中选用的基本数码的 个数
位权:数码所在位置表示的数 的大小
BCD码分类
BCD码可分为有权码和无权码两类: 有权BCD码有8421码、2421码、5421
码,其中8421码是最常用的; 无权BCD码有余3码、格雷码(注意:
格雷码并不是BCD码)等。
8421 BCD码是最基本和最常用的BCD码,它 和四位自然二进制码相似,各位的权值为8、 4、2、1,故称为有权BCD码。 和四位自然二进制码不同的是,它只选用了 四位二进制码中前10组代码,即用 0000~1001分别代表它所对应的十进制数, 余下的六组代码不用。
11111111
255
-127
-3
-2
-2
-1
-1
-0
四、数的运算
1、算术运算
[X]补+[Y]补=[X+Y]补 [X-Y]补= [X]补+[-Y]补
四、数的运算
1、算术运算
[X]补+[Y]补=[X+Y]补 [X-Y]补= [X]补+[-Y]补
四、数的运算
2、二进制数的逻辑运算 (1)逻辑非 A (2)逻辑与 (3)逻辑或
[x]补 = 2 + ( 0.1100000 ) = 10.0000000
0.1100000
用 小数点 将符号位
1.0100000
和数值部分隔开
求补码的快捷方式
设 x = 1010 时
则[x]补 = 24+1 1010 = 100000 1010 = 1,0110
又[x]原 = 1,1010
= 11111 + 1 1010 = 11111
8421码 十进制数
5421码
2421码
余3码
0
0000
0000
0000
0011
1
0001
0001
0001
0100
2
0010
0010
0010
0101
3
0011
0011
0011
0110
4
0100
0100
0100
0111
5
0101
1000
1011
1000
6
0110
1001
1100
1001
7
0111
1010
第二章 数据的表示与运算
第一节 数的表示
一、无符号数和有符号数
1、无符号数:
没有符号的数,寄存器中的每一位都可用 来存放数据
机器字长为n位,无符号数的表示范围 为0~2n-1
反映无符号数的表示范围
8位 16 位
0 ~ 255 0 ~ 65535
有两种常用的无符号表示法: ◆ 非负数码:表示0或一个正数
(1) 定义
整数
0,x
2n > x ≥ 0
[x]反 = ( 2n+1 – 1) + x 0 ≥ x > 2n(mod 2n+1 1)
x 为真值
n 为整数的位数
如 x = +1101
x = 1101
[x]反 = 0,1101
[x]反 = (24+1 1) 1101 = 11111 1101
用 逗号 将符号位
= 1,0010
和数值部分隔开
小数 x
[x]反 = ( 2 – 2-n) + x
1>x≥ 0 0 ≥ x > 1(mod 2 2-n)
x 为真值 n 为小数的位数
如 x = + 0.1101
x = 0.1010
[x]反 = 0.1101
[x]反 = (2 2-4) 0.1010
= 1.1111 0.1010
有符号小数: +0.1011,在机器中表示为
-0.1011,在机器中表示为
第一节 数的表示
一、无符号数和有符号数 2、有符号数
有符号整数: +1101,机器中表示为
-1101, 机器中表示为
第一节 数的表示
一、无符号数和有符号数
★带“+”或“-”符号的数称为真值 ★机器编码中把符号“数字化”的数称为机 器数或机器码
1101
1010
8
1000
1011
1110
1011
9
1001
1100
1111
1100
余3循环 码
0010 0110 0111 0101 0100 1100 1101 1111 1110 1010
(4)逻辑异或: 按位求两个二进
制数的模2和(不带进位的按位加)
第二节 文字信息的编码与表示
一、数字的编码—BCD码
* BCD码(Binary-Coded Decimal)亦称二 进码十进数或二-十进制代码。 * 用4位二进制数来表示1位十进制数中的 0~9这10个数码。 * 是一种二进制的数字编码形式,用二进 制编码的十进制代码。
三、数值数据的表示
3、补码表示法
例:设计算机字长为8位
x=+0.1011B,[x]补=[x]原= 0.1011000B x= -0. 1110B,[x]原=1. 1110000B
[x]补=1.0001111B+……1B =1.0010000B
练习 求下列真值的补码
真值
[x]补
[x]原
x = +70 = 1000110 0, 1000110 0,1000110
x = 0.1101
[x]原 = 1 ( 0.1101) = 1 . 1101
x = + 0.1000000
[x]原 = 0 . 1000000
用 小数点 将符号 位和数值部分隔开
x = 0.1000000 [x]原 = 1 ( 0.1000000) = 1 . 1000000
三、数值数据的表示 1、原码表示法
3、补码表示法
正数的补码和原码相同 负数的反码是对该数的原码除符号位外的 各位按位取反,然后末位加1
补码定义
整数
[x]补 =
0,x 2n+1 + x
2n > x ≥ 0 0 > x ≥ 2n(mod 2n+1)
x 为真值
n 为整数的位数
如
x = +1010
[x]补 = 0,1010
用 逗号 将符号位 和数值部分隔开
n位非负数码的数值范围:0 ~2n-1(所有位都为1) ◆ 2的补码(简称补码):既能表示正数又能表示负数
n位数的数值范围: -2n-1 ~ 2n-1-1
8位二进制数的非负数码和补码表示的数值
二进制表示
非负数码
补码
0000 0000 0000 0001
…… 0111 1111 1000 0000 1000 0001
x = 1011000
[x]补 = 27+1 +( 1011000 ) = 100000000 1011000
1,0101000
补码定义
小数 [x]补 =
x
1>x ≥0
2 + x 0 > x ≥ 1(mod 2)
x 为真值
如 x = + 0.1110
x = 0.1100000
[x]补 = 0.1110
1010 + 1
10101 + 1 = 1,0110
当真值为 负 时,补码 可用 原码除符号位外 每位取反,末位加 1 求得
三、数值数据的表示
3、补码表示法
例:设计算机字长为8位
x=+1000B,[x]补=[x]原=00001000B x= -1001B, [x]原=10001001B
[x]补=11110110B+……1B
[x]补 =
1.0000
不能表示
x
1>x≥ 0
2+ x 0 > x ≥ 1(mod 2)
[ 1]补 = 2 + x = 10.0000 1.0000 = 1.0000
三种机器数的小结
➢ 最高位为符号位,书写上用“,”(整数)
或“.”(小数)将数值部分和符号位隔开 ➢ 对于正数,原码 = 补码 = 反码 ➢ 对于负数 ,符号位为 1,其 数值部分
用 小数点 将符号位 和数值部分隔开
= 1.0101
(2) 举例
例1 已知 [x]反 = 0,1110 求 x
解: 由定义得 x = + 1110
例2 已知 [x]反 = 1,1110 求 x
解: 由定义得
x = [x]反 (24+1 1)
= 1,1110 11111
例 3 求 0 的反码
= 0001
第一节 数的表示
二、数制及转换
数制(进位计数制):按进位的 原则进行计数
1、十进制 2、二进制 3、八进制 4、十六进制
第一节 数的表示
二、数制及转换
数制转换:
非十进制十进制 例2-1 十进制非十进制
例2-2(整数)除基取余法 例2-3(小数)整数部分用除法
小数部分用乘法
第一节 数的表示
三、数值数据的表示
例 2 求 x = 0 的原码 解: 设 x = +0.0000 [+0.0000]原 = 0.0000
x = 0.0000 [ 0.0000]原 = 1.0000
同理,对于整数
[+ 0]原 = 0,0000
∴ [+ 0]原 ≠ [ 0]原
[ 0]原 = 1,0000
原码的特点: 简单、直观
但是用原码作加法时,会出现如下问题:
例1:设计算机字长为8位,求下列数的原码
x=+1010B, [x]原=? x= -1010B, [x]原=? x=+0.1001B, [x]原=? x= -0.0101B, [x]原=?
三、数值数据的表示 1、原码表示法
解:根据原码的定义,可得下列数的原码
x=+1010B, [x]原=00001010B x= -1010B, [x]原=10001010B x=+0.1001B, [x]原=0.1001000B x= -0.0101B, [x]原=1.0101000B
原码除符号位外每位取反末位加 1 补码 原码除符号位外每位取反 反码
例 设机器数字长为 8 位(其中1位为符号位)
对于整数,当其分别代表无符号数、原码、补码和 反码时,对应的真值范围各为多少?
二进制代码
00000000 00000001 00000010
无符号数 对应的真值
0 1 2
原码对应 的真值
…… 1111 1111
0 1 …… 127 128 129 …… 255
0 1 …… 127 -128 -127 …… -1
无符号表示的数值
第一节 数的表示
一、无符号数和有符号数
2、有符号数 有效数字前有一个符号位, 正数用“0”表示,负数用“1”表 示
第一节 数的表示
一、无符号数和有符号数 2、有符号数
解: 设 x = + 0.0000
[+0.0000]反= 0.0000
x = 0.0000
[ 0.0000]反= 1.1111
同理,对于整数
[+0]反= 0,0000 [ 0]反= 1,1111
∴ [+ 0]反 ≠ [ 0]反
三、数值数据的表示
2、反码表示法
例:设计算机字长为8位,给出下列数的反码
1、原码表示法(带符号的绝对值表示)
字长为n位,最高位为符号位,正数 “0”,负数“1”;数值部分的n-1位用二进 制真值的绝对值来表示
第一节 数的表示
三、数值数据的表示
1、原码表示法(带符号的绝对值表示)
0,x 2n > x ≥ 0 整数 [x]原 = 2n x 0 ≥ x > 2n
x 为真值 n 为整数的位数
+0 +1 +2
补码对应 的真值
+0 +1 +2
反码对应 的真值
+0 +1 +2
…
…
…
…
…
01111111
127
10000000
128
10000001
129
+127 -0 -1
+127 -128 -127
+127 -127 -126
…
…
…
…
…
11111101
253
-125
11111110
254
-126
x = 70 = 1000110 1, 0111010 1,1000110
x = 0.1110
0.1110
0.1110
x = 0.1110
1.0010
1.1110
x = 0.0000 [+ 0]补 = [ 0]补 0.0000
0.0000
x = 0.0000
0.0000
1.0000
x = 1.0000 由小数补码定义
x=+1101B,[x]反=[x]原=00001101B x= -1101B, [x]原=10001101B
[x]反=11110010B x=+0.1010B, [x]反=[x]原=0.1010000B x= -0. 1001B, [x]原=1. 1001000B
[x]反=1.0110111B
三、数值数据的表示
x = +1110 x = 1110
[x]原 = 0 , 1110
用 逗号 将符号位 和数值部分隔开
[x]原 = 24 + 1110 = 1 , 1110
小数
x [x]原 = 1 – x
x 为真值
1>x≥0 0≥x> 1
如 x = + 0.1101
[x]原 = 0 . 1101
用 小数点 将符号 位和数值部分隔开
要求 数1 数2
实际操作 结果符号
加法 正 正
加
正
加法 正 负
减
可正可负
加法 负 正
减
可正可负
加法 负 负
加
负பைடு நூலகம்
能否 只作加法 ? 找到一个与负数等价的正数 来代替这个负数 就可使 减 加
三、数值数据的表示
2、反码表示法
正数的反码和原码相同 负数的反码是对该数的原码除符号位外的 各位按位取反
反码表示法
机器码分为原码、反码、补码
第一节 数的表示
二、数制及转换
计算机 的信息
控制信息 数据信息
数值信息 字符 非数值 汉字
信息
逻辑数据
所有信息在计算机内均用二进制数表示
第一节 数的表示
二、数制及转换
数制(进位计数制):按进位的 原则进行计数
数制
基数:数制中选用的基本数码的 个数
位权:数码所在位置表示的数 的大小
BCD码分类
BCD码可分为有权码和无权码两类: 有权BCD码有8421码、2421码、5421
码,其中8421码是最常用的; 无权BCD码有余3码、格雷码(注意:
格雷码并不是BCD码)等。
8421 BCD码是最基本和最常用的BCD码,它 和四位自然二进制码相似,各位的权值为8、 4、2、1,故称为有权BCD码。 和四位自然二进制码不同的是,它只选用了 四位二进制码中前10组代码,即用 0000~1001分别代表它所对应的十进制数, 余下的六组代码不用。
11111111
255
-127
-3
-2
-2
-1
-1
-0
四、数的运算
1、算术运算
[X]补+[Y]补=[X+Y]补 [X-Y]补= [X]补+[-Y]补
四、数的运算
1、算术运算
[X]补+[Y]补=[X+Y]补 [X-Y]补= [X]补+[-Y]补
四、数的运算
2、二进制数的逻辑运算 (1)逻辑非 A (2)逻辑与 (3)逻辑或
[x]补 = 2 + ( 0.1100000 ) = 10.0000000
0.1100000
用 小数点 将符号位
1.0100000
和数值部分隔开
求补码的快捷方式
设 x = 1010 时
则[x]补 = 24+1 1010 = 100000 1010 = 1,0110
又[x]原 = 1,1010
= 11111 + 1 1010 = 11111
8421码 十进制数
5421码
2421码
余3码
0
0000
0000
0000
0011
1
0001
0001
0001
0100
2
0010
0010
0010
0101
3
0011
0011
0011
0110
4
0100
0100
0100
0111
5
0101
1000
1011
1000
6
0110
1001
1100
1001
7
0111
1010