html5-img
1 / 72

计算机科学引论

计算机科学引论. 数的表示和存储. 主要内容. 用数表示各种信息 数和进位制 数的存储. 用数表示各种信息. 计算机是实现数到数的变换的工具 大量不同的事物均可用数表示 整数、浮点数、字符…… 指令、程序…… 语音、图像、视频…… 操作抽象的数字比操作具体的物体容易 多快好省 可以利用众多的数学算法进行数到数的变换 如何用数表示人类所关心的信息?. 把所要表示的字符按某种顺序排列. 按所排列的顺序编号. 用数表示各种信息. 用数表示字符. A B C D E F ……. 1 2 3 4 5 6 …….

maddox
Télécharger la présentation

计算机科学引论

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 计算机科学引论 数的表示和存储

  2. 主要内容 • 用数表示各种信息 • 数和进位制 • 数的存储

  3. 用数表示各种信息 • 计算机是实现数到数的变换的工具 • 大量不同的事物均可用数表示 • 整数、浮点数、字符…… • 指令、程序…… • 语音、图像、视频…… • 操作抽象的数字比操作具体的物体容易 • 多快好省 • 可以利用众多的数学算法进行数到数的变换 • 如何用数表示人类所关心的信息?

  4. 把所要表示的字符按某种顺序排列 按所排列的顺序编号 用数表示各种信息 • 用数表示字符 A B C D E F …… 1 2 3 4 5 6 …… 天 地 玄 黄 宇 宙 …… 1 2 3 4 5 6 ……

  5. 用数表示各种信息 • 用数表示字符 A B C D E F …… 1 2 3 4 5 6 …… 天 地 玄 黄 宇 宙 …… 1 2 3 4 5 6 …… codepage代码页??

  6. 多媒体信息的表示 • 用数表示字符 • 典型的codepage • ASCII • GBK, BIG5, SJIS • UTF-8, UTF-16, UTF-32, UCS-2 • 同一个字在不同codepage下用不同的数字表示 • 同一个数字按不同codepage理解可得不同文字 • 乱码

  7. 多媒体信息的表示 同一个字在不同codepage下用不同的数字表示 我本将心向明月 GBK CE D2 B1 BE BD AB D0 C4 CF F2 C3 F7 D4 C2 JIS 89 E4 96 7B 8F AB 90 53 8C FC 96 BE 8C 8E UTF-16LE 11 62 2C 67 06 5C C3 5F 11 54 0E 66 08 67 UTF-16BE 62 11 67 2C 5C 06 5F C3 54 11 66 0E 67 08 UTF-8 E6 88 91 E6 9C AC E5 B0 86 E5 BF 83 E5 90 91 E6 98 8E E6 9C 88 BIG5 A7 DA A5 BB 3F A4 DF A6 56 A9 FA A4 EB 90 91 E6 98 8E E6 9C 88 十六进制后面讲

  8. 多媒体信息的表示 同一个数字按不同codepage理解可得不同文字 CE D2 B1 BE BD AB D0 C4 CF F2 C3 F7 D4 C2 GBK 我本将心向明月 JIS ホメアセスォミトマツ BIG5 扂掛蔚陑砃隴堎 UTF-16LE 뺱ꮽ쓐싔

  9. 多媒体信息的表示 • 用数表示字符 • Codepage标记 • HTML:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> • XML:<?xml version="1.0" encoding="UTF-8"?> • 纯文本:BOM (Byte Order Mark) • UTF-8 • EF BB BF …… • UTF-16 • BE: FE FF …… • LE: FF FE …… • ANSI:没有标记 Big-endian / little-endian后面讲

  10. 多媒体信息的表示 • 用数表示字符 • 文字信息在程序中的表示 • char * • wchar_t * • string

  11. 用数表示各种信息 • 用数表示声音 • 声音的物理特性:声波 • 记录声音的模拟方法 • 用别的可变物理量“模拟”声波 • 如磁场大小:磁带

  12. 用数表示各种信息 • 用数表示声音 • “数字”的方法 15 13.3 0 -1.1 -0.7 0.5 2.2 3.8……

  13. 用数表示各种信息 • 用数表示声音 • 数字方式的优势 • 一旦记录将不再有噪声可以混入 • 可以方便地存储 • 可以无损复制(好处?坏处?) • 可以被压缩 • 可以被计算机方便地处理

  14. R=179 G=99 B=97 用数表示各种信息 • 用数表示图像

  15. 用数表示各种信息 • 用数表示视频 • 多个连续数字图像组成的序列

  16. 用数表示各种信息 • 用数表示指令 • 指令的构成 • 操作 • 操作数 • “操作”需要的参数 • 编码指令的要求 • 编码操作 • 编码操作数

  17. 用数表示各种信息 • 用数表示指令 • 编码操作 • 把所需要表示的操作按序排列,再逐一编号 0 add 1 sub 2 mul 3 div 4 call ……

  18. 用数表示各种信息 • 用数表示指令 • 编码操作数 • 操作数情况比较复杂 • 常量/变量,正数/负数,整数/小数…… • 编码方案比较复杂 • 一个极端简化的例子 • 仅编码变量 • 总共10个存储单元 • 每个指令3个操作数 • z=x+y

  19. 012… 9 63 33 + 26 52 … 11 029 z=x+y 0029 用数表示各种信息 • 用数表示指令 • 编码操作数 • 编码单个操作数 • 把存储单元按顺序排列 • 顺序编号0-9 • 编码一个指令的三个操作数 • 用三位数字编码 • 编码整个指令

  20. 数和进位制 • “数”不过是一个抽象的概念,每个数用一个特定的符号或状态代表 • 0123456789 • 共十个符号,可以表示十个数 • ABCDEFGHIJKLMNOPQRSTUVWXYZ • 共二十六个符号,可以表示二十六个数 • 世界上有六十亿人,需要定义六十亿个符号才能表示??

  21. 数和进位制 • 用两个符号的排列可以表示比较多的数 • 两个0~9的排列可以表示0~99共100个数 • 0 ... 9 ... 11 ... 33 ... 78 ... 99 • 两个A~Z的排列可以表示A~ZZ共676个数 • A ... Z ... BB ... EA ... MP ... ZZ • 用更多个的符号,可以表示更多的数 • 基本符号集:少数几个表示数的基本符号 • 当一个数大到不能用基本符号集表示时就用多个基本符号的排列表示 进位制

  22. 数和进位制 • “大”数的表示 • “位”:每个基本符号占据的位置 • 进位:一“位”表示不下时,在前面加一位 • 进位制:何时在前面加一位 • “进位”的“制度” • 简称“进制” 10 前面另加一个基本符号 基本符号表示不了 6000000000 前面另加很多基本符号

  23. 有效数字 进制 数和进位制 • “大”数的值 ……d3 d2 d1 d0 ……5 3 7 8 …… + 5x103+ 3x102+7x101+8x100

  24. 数和进位制 • 一般的进位制 • 当数的大小刚好等于基本符号个数时“进位” • 是等于不是大于:要表示0 • 最常用的进位制:十进制 • 十个基本符号 • 逢十进一 • 原因:十指

  25. 数和进位制 • 常用的“非十”进制 • 六十进制 • 1小时=60分=3600秒 • 1甲子=60年 • 1亩=60平方丈 • 十二进制 • 1年=12月 • 1天=12时辰 • 1打=12个 • 1英尺=12英寸

  26. 计算机使用的进位制 • 计算机对进位制的要求 • 要简单:容易实现 • 可与十进制等价:人们最常用的进位制 • 简单:符号越少越简单 • 存储:N个符号的进位制,存储单元就要有N个不同的物理状态 • 运算: N个符号的进位制,加法需要NxN条规则

  27. 计算机使用的进位制 • 0个符号? • 没有这样的进位制 • 一个符号:一进制? • 计算机不仅要表示数,还要运算:运算意味着变化,只有一个符号无法表示变化 • 一进制在数学上不能与十进制等价 • 如何表示0?

  28. 计算机使用的进位制 • 二个符号:二进制 • 既可以表示数,也可以表示变化 • 数学上可以与十进制等价 • 计算机都用二进制 • 计算机使用二进制并不意味着程序也必须使用二进制 • 编译连接程序:用二进制、十进制、十六进制等 • 工资报表程序:通常用十进制 • 科学计算程序:可能用任意进制

  29. 二进制 • 表示数的符号 • 0,1 • 进位制 • 逢二进一 • 表示 • 书写:11012 • 汇编:1101b

  30. 二进制 • 二进制数的值 • d31d30 ... d2d1d0 • value=d31x 231 + ... + d1 x 21 + d0 x 20 • 例:1011 = 1x23 + 0x22 + 1x21 + 1x20 = 8 + 0 + 2 + 1 = 11 • 二进制转换成十进制的方法

  31. 5 2=2…1 2 2=1…0 1 2=0…1 1 0 1 1 二进制 • 十进制数转换成二进制数 112=5…1

  32. 十六进制 • 人类的阅读和记忆习惯 • “进制”很高:可接受很大数量的符号 • 例:汉语 • 短时记忆很小:仅可记忆几个到十几个字 • 处理差异很小的符号时容易出错 • 二进制不适合人们阅读和记忆 • 0001 1001 0111 1000 0000 0010 0010 0110 • 很长但类似的符号,不符合人们的习惯 • 转换成十进制? • 麻烦 • 更简单的表示:十六进制 • 0x19780226

  33. 十六进制和二进制的相互转换 • 1010 0010 0011 0110 • A 2 3 6 • 需要人处理的情况多用十六进制

  34. 输入 输出 0 0 0 0 1 0 1 0 0 1 1 1 输入 输出 0 0 0 0 1 1 1 0 1 1 1 1 输入 输出 0 1 1 0 二进制数的特殊性质 • 二进制数用于逻辑运算 • 二进制数非常适合用于逻辑运算 • 二值逻辑可以用二进制数方便表示:真/假 • 二值逻辑的运算可以用二进制数方便实现

  35. 二进制数的特殊性质 • 二进制数用于逻辑运算 • 二值逻辑的重要性 • 数学上,基于二值逻辑的数理逻辑体系可以与实数域的数学体系等价 • 微积分课程中会学到 • 二值逻辑功能可以用电子元件方便地实现 • 整数运算可以化解成二值逻辑 • 现代数字电路的理论基础 • 现代数字电子计算机的基础 • 二值逻辑在编码、加密等领域有重要应用

  36. 二进制数的特殊性质 • 基于二值逻辑的二进制数存储单元 • 最简单的触发器 数字电路之于模拟电路的一个重要优点是可以方便地实现数据的精确无限时存储!

  37. 1 + 1 10 进位 二进制数的加法 • 0+0=0 • 0+1=1 • 1+0=1 • 1+1=?

  38. 1 1 0 0 二进制数的加法 0 0 • 多位二进制数的加法 • 10+7=17 1 0 1 0 + 0 1 1 1 ------------------------- 1 0 1 全加器:把三个二进制数相加,输出两个二进制数(和与进位)

  39. Ai Si Bi Ci+1 Ci 异或 输入 输出 0 0 0 0 1 1 1 0 1 1 1 0 二进制数的加法 • 一位全加器

  40. 二进制数的加法 • 多位全加器 Carry Sum A, B C0

  41. 二进制数的减法 • 0-0=0 • 1-0=1 • 1-1=0 • 0-1=? 0-1=-1,但是我们现 在还不能表示负数!

  42. 负数的表示 • 数的符号:+/- • 用一位二进制数可以表示:0->+,1->- • 用最高位表示符号:原码 • 10000000000000000000000000000001:-110 • 00000000000000000000000000000001:+110 • 问题 • 0x10000001+0x00000001=? • 必须考虑符号位 • 0x00000000=010,0x80000000=010 • 两个0? 符号位 有效位

  43. 取反 111112 - 00002 -010 +0-0? +0: 000002 -0: 111112 负数的表示 • 反码(基一的补码):各位取反 • 710 = 001112 -710 = 110002 • 710+( -710 )= 001112+ 110002=111112 看上去很美

  44. 负数的表示 • 究竟该如何表示负数? • 越简单越好 • 如何才能简单? • 实际的使用借位的减法运算: • 3 - 4 => …0011 - …0100 = …1111 • 既然运算结果如此,我们就用这个结果表示负数 • -N = 0-N(用二进制借位运算) • 基二的补码:简称补码

  45. 负数的表示 00000 • 2N-1个非负数 • 2N-1个负数 • 一个0 • 几个正数? 00001 11111 11110 00010 0 -1 1 11101 2 -2 -3 11100 -4 . . . . . . 15 -15 -16 01111 10001 10000

  46. 负数的表示 • 二进制补码转换成十进制数 • d31 x -231+ d30 x 230 + ... + d2 x 22 + d1 x 21 + d0 x 20 • 例: • 1111 1111 1111 1111 1111 1111 1111 11002 = 1x-231+1x230 +1x229+...+1x22+0x21+0x20 = -231+ 230 + 229 + ...+ 22 + 0 + 0 = -2,147,483,64810 + 2,147,483,64410 = -410

  47. 负数的表示 • 改变符号:取反加1 • 例: -4 -> +4 -> -4x : 1111 1111 1111 1111 1111 1111 1111 11002x’: 0000 0000 0000 0000 0000 0000 0000 00112+1: 0000 0000 0000 0000 0000 0000 0000 01002()’: 1111 1111 1111 1111 1111 1111 1111 10112+1: 1111 1111 1111 1111 1111 1111 1111 11002

  48. 负数的表示 • 符号扩展 • 补码非负数有无限个前导0 • 补码负数有无限个前导1 • 在补码前面添加符号位,值不变 1111 1111 1111 11002 1111 1111 1111 1111 1111 1111 1111 11002

  49. 负数的表示 • 加法与减法 • 用补码表示的数,做加法和减法时可以不考虑符号位与有效位的区别,直接当作一个整体进行运算 • 例:4位补码运算 2+3=5 0 0 1 0 + 0 0 1 1 ------------ 0 1 0 1 2-5=-3 0 0 1 0 - 0 1 0 1 ------------ 1 1 0 1 1 1 1 符号位和普通有效位一起运算

  50. 有符号数和无符号数 • 有符号数 • C类型:int • 用补码表示 • 无符号数 • C类型:unsigned • 没有符号表示的问题,所以所有位都是数的有效位

More Related