原码反码补码

  • 格式:pptx
  • 大小:191.58 KB
  • 文档页数:28

下载文档原格式

  / 28
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
思考: 在计算机中, 8-2是否也可以化为8+10? 如果不行,那么应化为什么样的式子?
补码 • 引入的思路(4)
• 不同之处:
– 表计时的最大数是12 – 计算机计数的最大数不是12
(思考:那么是多少呢?)
– 我们把这个数称为 模 – 计算机的模与字长有关。8位机的模是28=256
n位
模=12
…… 模=2n
0100011
(00100011)
8位
(0000000000100011)
16位
三、有符号数的表示
• 原码 • 反码 • 补码
1、原码
• 真值用二进制表示后,数的数值部分不 变,在符号位上用“0”和“1”分别表示 数的符号“+”和“-”。
• X的原码一般表示为 [X]原
• 如:
x
[x]原
+1001001
• 如果已知x的补码[x]补,则求[-x]补的方法 是: 对[x]补连同符号位一起求反加1 例:
已知 [+35]的补码是00100011, 则 [-35]补=11011101
补码 •几点补充说明(3)
• 用补码运算时符号位也参与运算,有符 号数与无符号数的运算是兼容的。
例:
看成无符号数
二进制数相加
看成补码
134
+
26
160
10000110 + 00011010
10100000
-122
+
26
-96
出现问题
• 错误的结果:
11001011 10010001
01011100
-0110101 + -1101111
+1011100
-53 + -111
-+19624
ຫໍສະໝຸດ Baidu
思考:为什么出现了错误?
补码 • 溢出
第三讲 计算机中的数制和码制
Ⅱ 码制
原码、反码与补码
一、机器数与真值(1)
• 真值:
– 实际的数值(包括正负号)叫做真值。 – 如:
+35,-1001110B,-100101B
一、机器数与真值(2)
• 机器数:
– 机器数:数在计算机中的表示; – 在计算机中,数只能用二进制表示,符号也
用二进制数位表示; – 是存放在寄存器或储存单元中的。 – 例如:
补码 • 引入补码的目的
• 将加、减运算简化为单纯的相加运算, 以便于在计算机中实现各种运算。
补码 • 引入的思路(1)
• 由钟表拨表针的方法得到启示; • 例如:把表上的8点钟改为6点钟
方法一:
反时针 拨2格
方法二:
顺时针 拨10格
补码 • 引入的思路(2)
方法一:
反时针 拨2格
方法二:
顺时针 拨10格
例: 设 x=+0000111 , y=+0000100, 计算式子:x―y
(先算出[x]补=00000111, [-y]补=11111100 , x―y=x+(-y) )
补码运算:
手工验算:
00000111 [x]补 + 11111100 [-y]补
0000111 x
- 0000100
y
1 00000011 [x-y]补
10110011 1
10110100
求反 =11111111B -1001100B+1
加1
= 10110100B
补码 •补码的求法(2)
• 对于负数的补码求法,还有另一个更快速的办 法:
符号位为1,真值中最后一个1以前的各位 按位求反,而最后一个1及其后的0保持不变。
11111111 01001100
0000011 x-y
自然丢失
补码 •几点补充说明(1)
• 微机内部,带符号数均用补码表示。 • 采用补码进行运算后,结果也是补码,
欲得真值,需作转换。
转换方法
0开头:将0换成“+”号,其余数位不变。 方法1: 减 1求反
1开头:1换成“-”号,其余 方法2: 求反加1
补码 •几点补充说明(2)
补码 •补码的求法(1)
• 正数:与原码相同;
• 负数:“求反加一”
例:
x=+1001100B,则[x]补=01001100B=[x]原
x=-1001100B,则[x]补=10110100B
x=-1001100时, [x]补=28-1001100B
11111111 01001100
=256 -1001100B =255 -1001100B +1
01001001
-1100100
11100100
2、反码
• 正数的反码:与原码相同;
• 负数的反码:符号位为“1”,数值位按 位取反。
• X的反码一般表示为 [X]反 • 如:
x
+1001001 -1100100
[x]反
01001001 10011011
3、补码
• 引入补码的目的 • 引入的思路 • 补码的求法 • 补码的作用与效果 • 几点说明 • 溢出
补码 • 引入的思路(5)
• 观察钟表拨针的两种方法: 8- 2=6 8 + 10 = 6
我们可以看出,减去一个数 a 相当于加上(模 -a)一样,而在计算机中也有相同情况。 • 在8位字长的计算机中,减去一个数a相当于加 上(28-a)一样。 • 我们称(28-a)为a的补数,其二进制表示形式 称为补码。
• 拨针方法小结: 8- 2=6
8 + 10 = 6 • 思考:为什么会出现这种现象?计算机中是否
也有这种现象? (表盘是圆的,可循环计时。)
补码 • 引入的思路(3)
• 计算机储存一个数也有与钟表相同的特 点:
循环计数
• 因此对于计算机,要计算像 8-2
这样的减法式子,也可以化为加法形式来 进行。
• 刚才出现的问题叫做“溢出”; • 溢出的原因:运算结果超出了可表示的有
符号数的范围。 • 溢出只会出现在两个同号数相加或两个异
号数相减的情况下。
思考:如何判别溢出与正常进位?
补码 • 溢出的判别(1)
• 方法一:转换为真值,判断是否超出数值 表示范围。
10110011 1
10110100
符号位为1
按位求反
最后一个1及 其后的0不变
补码 •补码的求法(3)
• 课堂练习
1、求出下列各数的补码(8位)
(1) – 67
10111101
(2) +1011001B
01011001
(3) – 45
11010011
补码 •补码的作用与效果
• 用补码表示计算机中的数后,加减运算均可统 一为加法。
10000111,11001001,01100011
二、无符号数与有符号数
• 无符号数:
– 全部二进制均代表数值,没有符号位。
• 有符号数:
– 用最高位作为符号位,“0”代表“+”,“1”代 表“-”;其余数位用作数值位,代表数值。
– 如: +35 化为有符号机器数
转换为
化成有
二进制
符号数
+35
+100011B