计算机中的原码、反码和补码

上传人:豆浆 文档编号:751116 上传时间:2017-05-13 格式:DOC 页数:9 大小:58.50KB
返回 下载 相关 举报
计算机中的原码、反码和补码_第1页
第1页 / 共9页
计算机中的原码、反码和补码_第2页
第2页 / 共9页
计算机中的原码、反码和补码_第3页
第3页 / 共9页
计算机中的原码、反码和补码_第4页
第4页 / 共9页
计算机中的原码、反码和补码_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《计算机中的原码、反码和补码》由会员分享,可在线阅读,更多相关《计算机中的原码、反码和补码(9页珍藏版)》请在金锄头文库上搜索。

1、补码补码补码(twos complement) 1、在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 2、补码与原码的转换过程几乎是相同的。补 码 概 述求 给 定 数 值 的 补 码 表 示 分 以 下 两 种 情 况 : ( 1) 正 数 的 补 码与 原 码 相 同 。 【 例 1】 +9 的 补 码 是 00001001。 (备 注 : 这 个 +9 的 补 码 说 的 是 用 8 位的 2 进 制 来 表 示 补 码 的 , 补 码

2、 表 示 方 式 很 多 , 还 有 16 位 2 进 制 补 码 表 示 形式 , 以 及 32 位 2 进 制 补 码 表 示 形 式 等 。 ) ( 2) 负 数 的 补 码负 数 的 补 码 是 对 其 原 码 逐 位 取 反 , 但 符 号 位 除 外 ; 然 后 整 个 数 加 1。 同 一 个 数 字 在 不 同 的 补 码 表 示 形 式 里 头 , 是 不 同 的 。 比 方 说 -15 的 补码 , 在 8 位 2 进 制 里 头 是 11110001, 然 而 在 16 位 2 进 制 补 码 表 示 的 情 况 下 ,就 成 了 1111111111110001。 在

3、这 篇 补 码 概 述 里 头 涉 及 的 补 码 转 换 默 认 了 把一 个 数 转 换 成 8 位 2 进 制 的 补 码 形 式 , 每 一 种 补 码 表 示 形 式 都 只 能 表 示 有 限的 数 字 。 【 例 2】 求 -7 的 补 码 。 因 为 给 定 数 是 负 数 , 则 符 号 位 为 “1”。 后 七 位 : +7 的 原 码 ( 0000111) 按 位 取 反 ( 1111000) 加1( 1111001) 所 以 -7 的 补 码 是 11111001。 已 知 一 个 数 的 补 码 , 求 原 码 的 操 作 分 两 种 情 况 : ( 1) 如 果 补

4、 码 的 符 号 位 为 “0”, 表 示 是 一 个 正 数 , 其 原 码 就 是 补 码 。 ( 2) 如 果 补 码 的 符 号 位 为 “1”, 表 示 是 一 个 负 数 , 那 么 求 给 定 的 这 个补 码 的 补 码 就 是 要 求 的 原 码 。 再 举 一 个 例 子 : 求 -64 的 补 码 +64: 01000000 11000000 【 例 3】 已 知 一 个 补 码 为 11111001, 则 原 码 是 10000111( -7) 。 因 为 符 号 位 为 “1”, 表 示 是 一 个 负 数 , 所 以 该 位 不 变 , 仍 为 “1”。 其 余 七

5、 位 1111001 取 反 后 为 0000110; 再 加 1, 所 以 是 10000111。 在 “闲 扯 原 码 、 反 码 、 补 码 ”文 件 中 , 没 有 提 到 一 个 很 重 要 的 概 念“模 ”。 我 在 这 里 稍 微 介 绍 一 下 “模 ” 的 概 念 : “模 ”是 指 一 个 计 量 系 统 的 计 数 范 围 。 如 时 钟 等 。 计 算 机 也 可 以 看 成一 个 计 量 机 器 , 它 也 有 一 个 计 量 范 围 , 即 都 存 在 一 个 “模 ”。 例 如 : 时 钟 的 计 量 范 围 是 0 11, 模 =12。 表 示 n 位 的 计

6、 算 机 计 量 范 围 是 0 2(n)-1, 模 =2(n)。 “模 ”实 质 上 是 计 量 器 产 生 “溢 出 ”的 量 , 它 的 值 在 计 量 器 上 表 示 不 出来 , 计 量 器 上 只 能 表 示 出 模 的 余 数 。 任 何 有 模 的 计 量 器 , 均 可 化 减 法 为 加 法 运 算 。 例 如 : 假 设 当 前 时 针 指 向 10 点 , 而 准 确 时 间 是 6 点 , 调 整 时 间 可 有以 下 两 种 拨 法 : 一 种 是 倒 拨 4 小 时 , 即 : 10-4=6 另 一 种 是 顺 拨 8 小 时 : 10+8=12+6=6 在 以

7、12 模 的 系 统 中 , 加 8 和 减 4 效 果 是 一 样 的 , 因 此 凡 是 减 4 运 算 ,都 可 以 用 加 8 来 代 替 。 对 “模 ”而 言 , 8 和 4 互 为 补 数 。 实 际 上 以 12 模 的 系 统 中 , 11 和1, 10 和 2, 9 和 3, 7 和 5, 6 和 6 都 有 这 个 特 性 。 共 同 的 特 点 是 两 者 相 加 等 于 模 。 对 于 计 算 机 , 其 概 念 和 方 法 完 全 一 样 。 n 位 计 算 机 , 设 n=8, 所 能 表示 的 最 大 数 是 11111111, 若 再 加 1 称 为 1000

8、00000(9 位 ), 但 因 只 有 8 位 , 最 高 位 1 自 然 丢 失 。 又 回了 00000000, 所 以 8 位 二 进 制 系 统 的 模 为 28。 在 这 样 的 系 统 中 减 法 问 题 也 可 以 化 成 加 法 问 题 , 只 需 把 减 数用 相 应 的 补 数 表 示 就 可 以 了 。 把 补 数 用 到 计 算 机 对 数 的 处 理 上 , 就 是 补 码 。 另 外 两 个 概 念 一 的 补 码 (ones complement) 指 的 是 正 数 =原 码 ,负 数 =反 码 而 二 的 补 码 (twos complement) 指 的

9、就 是 通 常 所 指 的 补 码 。 小 数 补 码 求 法 : 一 种 简 单 的 方 式 , 符 号 位 保 持 1 不 变 , 数 值 位 从 右 边数 第 一 个 1 及 其 右 边 的 0 保 持 不 变 , 左 边 按 位 取 反 。 (3).补 码 的 绝 对 值 ( 称 为 真 值 )【 例 4】 -65 的 补 码 是 10111111 若 直 接 将 10111111 转 换 成 十 进 制 , 发 现 结 果 并 不 是 -65, 而 是 191。 事 实 上 , 在 计 算 机 内 , 如 果 是 一 个 二 进 制 数 , 其 最 左 边 的 位 是 1, 则我 们

10、 可 以 判 定 它 为 负 数 , 并 且 是 用 补 码 表 示 。 若 要 得 到 一 个 负 二 进 制 数 的 绝 对 值 ( 称 为 真 值 ) , 只 要 各 位 ( 包 括 符 号位 ) 取 反 , 再 加 1, 就 得 到 真 值 。 如 : 二 进 制 值 : 10111111( -65 的 补 码 ) 各 位 取 反 : 01000000 加 1: 01000001( +65 的 补 码 ) 代 数 加 减 运 算1、 补 码 加 法X+Y补 = X补 + Y补 【 例 5】 X=+0110011,Y=-0101001, 求 X+Y补 X补 =00110011 Y补 =1

11、1010111 X+Y补 = X补 + Y补 = 00110011+11010111=00001010 注 : 因 为 计 算 机 中 运 算 器 的 位 长 是 固 定 的 , 上 述 运 算 中 产 生 的 最 高 位 进位 将 丢 掉 , 所 以 结 果 不 是 100001010, 而 是 00001010。 2、 补 码 减 法X-Y补 = X补 - Y补 = X补 + -Y补 其 中 -Y补 称 为 负 补 , 求 负 补 的 方 法 是 : 负 数 的 绝 对 值 的 原 码 所 有 位 按位 取 反 ; 然 后 整 个 数 加 1。 (恢 复 本 来 解 释 。 请 路 人 真

12、 正 理 解 并 实 际 验 证 后再 修 改 。 以 免 误 导 大 众 。 另 外 , 例 6 不 具 典 型 性 , 新 增 例 7。 ) 【 例 6】 1+( -1) 十 进 制 1 的 原 码 00000001 转 换 成 补 码 : 00000001 -1 的 原 码 10000001 转 换 成 补 码 : 11111111 1+( -1) =0 00000001+11111111=00000000 00000000 转 换 成 十 进 制 为 0 0=0 所 以 运 算 正 确 。 【 例 7 增 】 -7-( -10) 十 进 制 -7 的 补 码 : 11111001 -1

13、0 的 补 码 : 11110110 -( -10) : 按 位 取 反 再 加 1 实 际 上 就 是 其 负 值 的 补 码 , 为 00001010 -7 - ( -10) = -7 + 10 = 3 11111001+00001010 = 00000011 转 换 成 十 进 制 为 3 3、 补 码 乘 法设 被 乘 数 【 X】 补 =X0.X1X2Xn-1, 乘 数 【 Y】 补 =Y0.Y1Y2Yn-1, 【 X*Y】 补 =【 X】 补 【 Y】 补 , 即 乘 数 ( 被 乘 数 ) 相 乘 的 补 码 等 于 补 码的 相 乘 。 补 码 的 代 数 解 释任 何 一 个

14、 数 都 可 以 表 示 为 -a=2(n-1)-2(n-1)-a; 这 个 假 设 a 为 正 数 , 那 么 -a 就 是 负 数 。 而 根 据 二 进 制 转 十 进 制 数 的 方法 , 我 们 可 以 把 a 表 示 为 : a=k0*20+k1*21+k2*22+k(n-2)*2(n-2),第 ( n-1) 位 为 符 号 位 不 计 算 在 内 。 这 里 k0,k1,k2,k(n-2)是 1 或 者 0, 而 且 这 里 设 a 的 二 进 制 位 数 为 n 位 ,即 其 模 为 2(n-1),而 2(n-1)其 二 项 展 开 是 :1+20+21+22+2(n-2),而

15、 式 子 : -a=2(n-1)-2(n-1)-a 中 , 2(n-1)-a 代 入a=k0*20+k1*21+k2*22+k(n-2)*2(n-2)和 2(n-1)=1+20+21+22+2(n-2)两 式 , 2(n-1)-a=(1-k(n-2)*2(n-2)+(1-k(n-3)*2(n-3)+(1-k2)*22+(1-k1)*21+(1-k0)*20+1,而 这 步 转化 正 是 取 反 再 加 1 的 规 则 的 代 数 原 理 所 在 。 因 为 这 里 k0,k1,k2,k3不是 0 就 是 1, 所 以 1 k0,1-k1,1-k2 的 运 算 就 是 二 进 制 下 的 取 反

16、 , 而 为 什 么要 加 1, 追 溯 起 来 就 是 2(n-1)的 二 项 展 开 式 最 后 还 有 一 项 1 的 缘 故 。 而 -a=2(n-1)-2(n-1)-a 中 , 还 有 -2(n-1)这 项 未 解 释 , 这 项 就 是 补 码 里 首 位的 1, 首 位 1 在 转 化 为 十 进 制 时 要 乘 上 2(n-1), 这 正 是 n 位 二 进 制 的 模 。 不 能 贴 公 式 , 所 以 看 起 来 很 麻 烦 , 如 果 写 成 代 数 式 子 看 起 来 是 很 方 便 的 。注 : n 位 二 进 制 , 最 高 位 为 符 号 位 , 因 此 表 示

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号