1、计算机硬件系统的5大功能部件

1945年,世界上出现了第一台电子数字计算机,取名ENIAC(埃尼阿克),主要用于计算弹道。它体积庞大,占地面积500多平方米,重量约30吨,功耗为170千瓦,这台计算机使用了17840支电子管,其运算速度为每秒5000次的加法运算。其运算速度为每秒5000次的加法运算。

计算机硬件发展历史

时间 硬件技术 速度 / (次/秒)
1 1946-1957 电子管 40 00
2 1958-1964 晶体管 200 000
3 1965-1971 中小规模
集成电路
1 000 000
4 1972-1977 大规模
集成电路
10 000 000
5 1978-现在 超大规模
集成电路
100 000 000

“计算机之父”-冯·诺依曼

他的精髓贡献是两点:二进制思想与程序内存思想。

著名的“冯·诺依曼机”包括:运算器、逻辑控制装置、存储器、输入和输出设备五大部分,该结构一直沿用到今。

计算机硬件系统

现代计算机结构框图

2、计算机软件分类及编程语言的前世今生

计算机软件分类

二进制思想

  • 采用有限个状态(用0和1)来表示、处理、存储和传输数据的技术。
  • 计算机中的一切内容都是数字0、1。

从物理世界到计算机世界

众所周知物理中后的 电流电压 。计算机只能识别二进制,我们规定:

大于某个某个电压的电流就代表你输入了1

小于某个电压你就输入了0

为什么是二进制?

你想想,你把计算机设计成10进制,就需要给给电压设置10个水准。

一个瓜子是切成两半好控制还是切成10瓣好控制?

编程语言的前世今生

从上面了解到了一个真理:

计算机只能识别二进制

现在幻想是你发明的计算机:

你想实现增值运算

你得用一串二进制代表这个是一个 + ,你决定使用 0100 0011 代表 +

你想实现增值运算

你得用一串二进制代表这个是一个 - ,你决定使用 0100 0010代表 -

你发现这样太费劲了,不如开发一个东西,让他把 add 这个单词转换成 0100 0011

一门以二进制为底层的变成语言被你创造了。

有一天,你连add都嫌费劲了,因为需要敲3下键盘。

于是乎,你再次创造了一门变成语言将+ 转换成 add

3、计算机如何执行你的程序

  • 把程序和数据装入到主存储器中。
  • 从程序的起始地址运行程序。
  • CPU的工作非常简单,它从内存中获取一个指令并执行该指令,然后从内存中获取下一个指令并执行。CPU能以惊人的速度来从事枯燥的工作(机器是很辛苦的)。
  • 每条指令都要经过取指、译码、执行。

计算机的性能指标

  1. 机器字长

    进行一次运算所能处理的二进制数据的位数

  2. 主存容量

    指主存所能存储的最大容量

  3. 运算速度

    衡量性能的一个重要指标。CPU时钟周期、主频、MIPS(Million Instructions Per Second)等

  4. 数据通路带宽

    数据总线一次并行传递数据的位数。

4、进制的世界

什么是进制?

N 进制的每一位最高只能是N-1

根据10进制好好想一想阿拉伯数字:,再往上,想要表达应该如何去书写?

`10进制 2进制 8进制 16进制
10 1010 12 a
11 1011 13 b
12 1100 14 c
13 1101 15 d
14 1110 16 e
15 1111 17 f
16 10000 20 10

进制间的转换

10 进制 -> N进制

整数部分:除p倒取余

小数部分:乘P正取整

例如26.325转换成二进制

整数部分

计算 余数
26/2=13…0 13 0
13/2=6…1 6 1
6/2=3…0 3 0
3/2=1…1 1 1
1/20…1 0 1

计算完毕。

倒取余为:11010

小数部分

计算 整数部分 小数部分
0.325*2=0.65 0 65
0.65*2=1.3 1 3
0.3*2=0.6 0 6
0.6 *2=1.2 1 2
0.2*2=0.4 0 4
0.4*2=0.8 0 8
0.8*2=1.6 1 6

计算完毕

(26.325)10 = (11010.0101001)2

关于小数的计算完毕

1、小数部分为0。

2、在数学中,存在无穷的的小数3.1415926……,算不完呀,只能精确到一定位数。

10 进制 -> N进制

N 进制==->==10进制`

将各位数码和其 权值 相乘后求和,即可转换成十进制.

权值

请细细品位何为权值。

二进制数 等价的权值
1 20
10 21
100 23
1000 24

例: 10110转换成十进制

进制间的转换

5、非数值数据的编码

如上所述我们已经了解了计算机是如何在二进制世界中表示数字的。

那各种字符该怎么表示呢?

举个例子。你当下看到的:汉字A ,他们肯定是对应着某个2进制吧?

接下来,了解一下 字符编码 的发展里程把。

ASCII编码

ASCII(American Standard Code for Information Interchange),用7个bit位表达128个符号。

American :美国

美国人发明了计算机,他们发明了一种规则,某个二进制对应某个字符这就是ASCII

一开始是 7个 bit为的 ascii 编码,后来他们感觉不够用,又扩展了一些。

扩展的ASCII码

在原有的基础上扩展到8位。

GB2312

ASCII 码只有英文,没办法表示汉字呀,就在此时,我们的中文编码 国标2312 应时而出。

  • 《信息交换用汉字编码字符集》是由中国国家标准总局1980年发布,198151日开始实施的一套国家标准,标准号是GB 2312—1980
  • GB 2312标准共收录6763个汉字,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆**99.75%**的使用频率。
  • GB 2312127号之后的字符取消掉,使用2个大于127的字节连在一起表示1个字符。大约表示了7000多个简体汉字。GB2312是对ASCII的中文扩展。

2个大于127的字节排列组合是远远大于,7000,之所以如此是为了留出空间兼容ASCII

Unicode

如上两种编码产生一个问题。那就是乱码 中国有GB2312,美国有ASCII、日本有……、韩国有……

当计算机网络面向世界的时候,这些都成为了很严重的问题。

unicode 正是为了结束这个三国混战的局面 而出现的。

  • Unicode( Universal Multiple-Octet Coded Character Set通用多八位编码字符集),简称UCS
  • Unicode(统一码、万国码、单一码)是一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
  • 在很多现代技术中,比如现代操作系统,Java语言等中都采用了Unicode标准规范。

Unicode面临的问题

如何将其与ASCII区别开来?英文字符的冗余问题。

因为unicode需要兼容一切所以他必然要适应哪些文字比较多的编码。

同样表示一个相同的字符。

不保证下方数值准确性,只为打比方

Unicode ASCII
0100 0101 0010 0100 0101 0111 0000 0000 0000 0000 0100 0001

美国人:

前面这么多零是什么意思?

这样岂不是我们所有的数据都需要浪费这么多的空间去存储一大堆的0

UTF

utf 的出现打破了unicode尴尬的局面

  • UTF(Universal Character Set Transformation Format)通用字符集转换格式
  • UTF中主要有UTF-8UTF-16UTF-32
  • UTF-8 每次传输8位数据,UTF-16每次传输16位数据。
  • UTF-8是变长字节编码方案,使用1-4个字节表示一个符号。

解释一下

为什么说utf 是的字节长度是可变的呢?

根据上面的图片来看。

utf-8 使用了一种比之 Unicode 来说比较聪明的做法。他可以说是Unicode 的延伸

制定不同的区间 ,使用不同的前缀来节省空间。

比如计算机要解码一串 UTF-8的二进制 :

01010010 11010010 10010010 01010010 11010010 10010010 01010010 11010010 10010010 01010010 11010010 10010010(我瞎编的)

计算机一次取8位。

``01010010`

一看 0 打头。哦,这是8个字节的字符。01010010 变成字符把

接下来

11010010

一看110打头。哦,这是一个 16个字节的字符。于是乎11010010 10010010变成字符把

……

例子:

Unicode中一个中文占2个字节,但是在UTF-8中,一个中文字符占3个字节(多出来一些前缀)。

汉字 Unicode编码16进制 Unicode编码2进制 UTF-8的编码
0077e5
(000800-00FFFF)
0111 0111 1110 0101 1110 0111 1001 1111 1010 0101

6、带符号数的表示及运算

无符号数和有符号数

  • 采用数字化方式来表示数据,数据有无符号数和带符号数之分,其中带符号数用‘0’表示‘正’号,用‘1’表示‘负’号。运算的时候为了统一处理数字位和符号位,演化出原码、补码和反码****3种表示形式。
  • 补码的应用居多,原因是补码可以带符号运算而且可以变减为加。
  • [x-y]补=[x]补+[-y]补

定点数

在定点数表示法中约定:所有数据的小数点位置固定不变。


浮点数

小数点的位置根据需要而浮动,这就是浮点数。
例如:

例如:

  • r为浮点数阶码的底,与尾数的基数相同,通常r=2EM都是带符号数,E叫做阶码,M叫做尾数。
  • 为了提高运算的精度,M一般取规格化形式,即规定尾数的最高数位必须为有效值。

溢出概念

  • 溢出是指运算结果超出了数的表示范围。

  • 例如:4个bit位的状态

    4bit表示的范围0—15
    1111

    + 1
    10000

精度

  • 对于字长相同的定点数和浮点数来说,浮点数虽然扩大了数的表示范围,但是精度降低了。
  • 在实际编程中由于精度问题,会导致一些错误。比如:31/3的乘积应该是1.0,但是若用6位小数表示1/3,乘积为0.999999而不等于1.0.造成一些逻辑判断错误,或者运算结果精度不够。
  • 建议搞清楚程序面对的问题规模,选择合适精度的数据类型。不能一概采用float

计算机概论和数据表示相关推荐

  1. 鸟哥的Linux私房菜(基础篇)-第零章、计算机概论(零.3)

    第零章.计算机概论 最近更新日期:2009/08/03 3. 数据表示方式 3.1 数字系统 3.2 文字编码系统 数据表示方式 事实上我们的计算机只认识0与1,记录的数据也是只能记录0与1而已,所以 ...

  2. 鸟叔的linux私房菜:第0章 计算机概论学习笔记(Learning Notes for Basic Computer Theory)

    本博客是针对<鸟叔的Linux私房菜 基础学习篇 第四版>的第0章 计算机概论的学习笔记. 1 电脑辅助人脑的好工具 11 计算机硬件的五大单元 12 一切设计的起点CPU的架构 其它单元 ...

  3. Linux学习:计算机概论

    计算机概论 引用:<鸟哥的Linux私房菜基础篇第三版> 计算机:辅助人脑的好工具 现在的人们几乎无时无刻都会碰计算机!不管是桌面计算机(PC).笔记本电脑.平板计算机.智能型手机等等,这 ...

  4. 现代计算机工作模式是由科学家,计算机概论各章作业.doc

    计算机概论各章作业 第一章 1.一个完整的计算机系统应该包括 ______. A)主机.键盘.鼠标和显示器 B)硬件系统和软件系统 C)主机和其他外部设备 D)系统软件和应用软件 2.计算机之 ...

  5. Linux 第0章 - 计算机概论

    Linux 第0章 - 计算机概论 操作系统跟硬件有相当程度的关联性,所以,了解一下计算机概论可能会帮助你更快的了解Linux的概念. 1 电脑:辅助人脑的好工具 计算机:接受用户输入的命令与数据,经 ...

  6. 鸟哥的Linux私房菜(基础篇)-第零章、计算机概论(零.5)

    第零章.计算机概论 最近更新日期:2009/08/03 5. 重点回顾 6. 本章习题 7. 参考数据与延伸阅读 8. 针对本文的建议:http://phorum.vbird.org/viewtopi ...

  7. 鸟哥的Linux私房菜(基础篇)-第零章、计算机概论(零.4)

    第零章.计算机概论 最近更新日期:2009/08/03 4. 软件程序运作 4.1 机器程序与编译程序 4.2 操作系统 4.3 应用程序 软件程序运作 鸟哥在上课时常常会开玩笑的问:『我们知道没有插 ...

  8. 鸟哥的Linux私房菜(基础篇)-第零章、计算机概论(零.2)

    第零章.计算机概论 最近更新日期:2009/08/03 2. 个人计算机架构与周边设备 2.1 CPU:CPU的外频与倍频,32位与64位,CPU等级 2.2 內存 2.3 显卡 2.4 硬盘与储存设 ...

  9. 鸟哥的Linux私房菜(基础篇)-第零章、计算机概论(零.1)

    第零章.计算机概论 最近更新日期:2009/08/03 1. 計算机:辅助人脑的好工具 1.1 計算机硬件的五大单元 1.2 CPU的种类 1.3 周边设备 1.4 运作流程 1.5 計算机分类 1. ...

最新文章

  1. NMAP输出结果中CPE的含义
  2. jquery input值改变事件_前端技术--JQuery
  3. 嵌入式码农的10年Bug调试经验,值得一看
  4. 用python画一个人_用turtle画个单身狗送给自己~
  5. Ubuntu环境下,使用clion编译器,使用开源opensll的对称AES算法对于文件进行加密,C++代码
  6. hihoCoder #1143 : 骨牌覆盖问题·一
  7. php 日期时间操作-可算出几天后的时间
  8. 组件注册-@Scope-设置组件作用域
  9. 让apache支持ssl
  10. java微信刷卡支付demo_微信刷卡支付例子
  11. SQL Server 2008 R2 清除日志
  12. Photoscan空三成果导入到ContextCapture(smart3d)生成倾斜模型教程
  13. matlab函数文件||脚本文件和函数文件的区别
  14. Amazon 新手要知道 100 个问题
  15. Maven Resources Plugin的Filtering功能的Bug
  16. Codeforces Round #555 (Div. 3), problem: (C2) Increasing Subsequence (hard version)【贪心+撞到南墙也不回头】
  17. 浙教版数学作业本,参考答案如此下载
  18. 移植ucos-III到stm32f103c8t6
  19. PAT A1103 Integer Factorization整数分解 (经典DFS优化)
  20. python开源库——h5py快速指南

热门文章

  1. 再谈马云的一淘“要让百度睡不着”
  2. Google C++编程规范 (中文版)
  3. 如何把传真机连接电脑当打印机使用?
  4. 关于在实验室的网络链接问题
  5. 西门子1200PLC如何在威纶通HMI上进行时间显示
  6. ubuntu下安装epsxe简单说明
  7. 如何安装github下载到的源码库
  8. “人工智能与人类社会”栏目约稿函暨论文汇总2022-2017
  9. 2020年四川省土地利用数据(矢量)
  10. 2018知乎live