计算机导论课上笔记2018.10.20

后缀
八进制Q O 十六进制H 十进制D 二进制B
省略不写都是十进制

原码,反码,补码
在这里插入图片描述

py课上笔记
数据类型
整形、实型、布尔型、字符串、数据结构(元组、列表、集合、字典)
赋值语句
数据结构之间的赋值
控制结构
函数调用

奇怪现象
3.8%2=1.799999999
3.14-3=0.140000000000000000012
a=1.234
b=a-int(a)
b=0.2339999999999999

这是因为小数以二进制形式表示时的有穷性导致的。我们知道,将一个小数转化为二进制表示的方式是,
不断的乘2,取其中的整数部分。例如:
(1) 0.6252 = 1.25, 整数部分为1,小数部分为0.25
(2) 0.25 * 2 = 0.5 , 整数部分为0,小数部分为0.5
(3) 0.5 * 2 = 1 ,整数部分为1,小数部分为0
所以0.625的二进制表示就是0.101。
然而有些小数,例如0.4,并不能够精确的转化为二进制表示,用上面的这种方法计算:
(1) 0.4
2=0.8 整数部分为0,小数部分为0.8
(2) 0.82=1.6 整数部分为1,小数部分为0.6
(3) 0.6
2=1.2 整数部分为1,小数部分为0.2
(4) 0.22=0.4 整数部分为0,小数部分为0.4
(5) 0.4
2=0.8 整数部分为0,小数部分为0.8
(6) 0.82=1.6 整数部分为1,小数部分为0.6
(7) 0.6
2=1.2 整数部分为1,小数部分为0.2
所以0.4转化为二进制,应该是0.0110…这样一个无限循环小数。计算机的内存、cpu寄存器等等这些硬件单元都是有限的,只能表示有限位数的二进制位,因此存储的二进制小数就会和实际转换而成的二进制数有一定的误差。
这个不是python 的问题,所有基于二进制的浮点数都会有这个问题,原因在于大部分浮点数转换为
二进制后都是无限循环小数,而浮点数不可能用无限大的内存来储存,所以会有舍入的误差。
所以在python中不建议直接将两个浮点数进行大小比较,或者做精确的计算,往往会得到意想不
到的结果。当然,如果非要用,可以参考decimal模块的相关内容。


作者:nearable
来源:CSDN
原文:https://blog.csdn.net/weixin_39202006/article/details/79156033

导论作业

1、举例分析,你对计算机的认识。
2、简述冯诺伊曼计算机体系结构。
3、你对内存的认识,数据是如何进行存取的。

答案
评分标准:第一题30分、第二题30分、第三题40分。
1、只要言之有理即可。
2、答案要点:第一、计算机有五大部件组成;第二、计算机中的指令、数据均用‘0’和‘1’表示(二进制表示);
第三、存储程序思想(这一点是核心)
3、答案要点:第一、内存的最小数据单位是bit,最小存储单位是Byte(按字节编号,这个编号就是地址);
第二、内存空间是线性的,即编号是一维的;第三,数据的存储是通过地址信号选中某个字节,数据通过数据线进出内存条。
特别说明:没有注释扣5分。

我的答案
1.计算机分为软件和硬件,硬件是软件的载体,软件(程序)是硬件的灵魂。软件分为操作系统,系统软件和应用软件;硬件有输出设备,输入设备,运算器,控制器,内存。第一台计算机是ENIAC,是由人工操作的,冯诺依曼提出了应该让计算机像对待数据一样储存程序指令。计算机有大型计算机,小型计算机,微型计算机。运算器和控制器叫CPU。

2.冯诺依曼计算机体系结构:输入设备,控制器,运算器,内存,输出设备。计算机像对待数据一样储存程序指令,计算机程序指令和数据都应以二进制的形式存储。

3.内存又叫主存,内存是狭长的,最小单位为位(bit),八位为一组叫字节(byte),在计算机生产出来的时候内存就已经有了标号叫内存地址,计算机通过寻址找到内存,原理是二四译码器。计算机输入数据,转化为二进制数,数据流过数据线(每个位都连接着一根数据线),同时计算机通过寻址并给相应的内存字节通电(s),数据就可以进入相应的内存,这就完成了存储数据。计算机通过寻址并给相应的内存字节通电(s),数据就可以从相应的内存地址中流出数据线,完成了取数据。

猜你喜欢

转载自blog.csdn.net/qq_43261873/article/details/83211493
今日推荐