Python学习 第一章:数据存储
简介
解释性、交互式、面向对象语言。
特点
易于学习:python有较少的关键字,结构简单,和一个明确定义的语法。(关键字指语言中预留的,有一些特殊含义的一些词)
易于阅读:python代码定义的更清晰。
易于维护:源代码相当容易维护。
一个广泛的标准库:python的最大优势之一是丰富的库,跨平台的,在Unix、windows 和Macintosh兼容很好。
互动模式:互动模式的支持,可以从终端输入执行代码并获得结果的语言,互动的测试 和调试代码片段。
可移植:基于开放的源代码特性,python已经被移植(也就是使其工作)到许多平台。
可扩展:如果需要一段运行很快的关键代码,或者是想要编写一些不开放的算法,可以 使用C或C++完成那部分程序,然后从你的python程序中调用。
数据库:python提供所有主要的商业数据库的接口。
GUI编程:python支持GUI可以创建和移植到许多系统调用。
可嵌入:可以将python嵌入到C或C++程序,让你的程序的用户获得“脚本化”的功能。
缺点:运行速度慢、代码不能加密。
第一章 数据存储
推荐一个文本编辑器:subline(基本上大多数的语言都能编写和执行)
1.为什么使用计算机? 存储数据、计算数据
2.数据存在哪里? 数据存储在内存里
3.为什么现在几乎都用64位的操作系统而不用32位的操作系统了? 由于内存的不断增长,内存用于存储数据,但是之后还会涉及到取数据,而32位的操作系统,最大的寻址空间是三G多,而现在大多都是4G、8G的内存,就会导致后面的数据无法取到。
4.数据如何在内存里存储的? 首先弄明白怎么存储数字(例如:10)。
内存:内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。 内存是由内存芯片、电路板、金手指等部分组成的。
将内存进行抽象:一个开关,有两种状态,开启和关闭。一种状态对应1,另一种状态对应0。把八个开关放到一间房间里,这个房间称为“一个字节”,一个开关代表“一位”。每个房间都有门牌号,看作“地址”。把无数个房间堆叠起来,组成摩天大厦。那么可以把摩天大厦看作“内存”。
内存相关单位:
1bit 8bit==一个字节 1024字节==1K 1024K==1M 1024M==1G 1024G==1T
内存中以二进制形式存储数据。
进制(二进制、八进制、十进制、十六进制)
二进制:0 1 逢二进一 0+0=0、0+1=1、1+1=10、11+1=100
八进制:0 1 2 3 4 5 6 7 逢八进一 1+7=10、1+2=3
十进制:0 1 2 3 4 5 6 7 8 9 逢十进一
十六进制:0 1 2 3 4 5 6 7 8 9 a b c d e f 逢十六进一 1+f=10
十六进制作用:内存地址用十六进制表示。
进制转换
十进制转二进制:倒除法(除2取余法),余数逆序。
10(10)->1010(2)
二进制转十进制:当前的数字,乘以2的位数次方,最后相加。
1010(2)->10(10)
0*2^0+1*2^1+0*2^2+1*2^3=0+2+0+8=10
八进制转二进制:八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。(有个简洁的8421法)
65(8)->110101(2)
二进制转八进制:3位二进制数按权展开相加得到1位八进制数。(注意事项,3位二进制转成八进制是从右到左开始转换,高位不足时补0)。
十六进制转二进制:十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。
a4-(16)>10100100(2)
二进制转十六进制:取四合一。(注意事项,4位二进制转成十六进制是从右到左开始转换,高位不足时补0)。
数据存储过程(例如想存数字10:10(10)->1010(2))
计算机存储数据,首先必须知道这个值在内存中占几个字节,然后先开辟内存空间(有的空间已经有数据,就最好不要用,以免将数据覆盖),再存储数据(存这个数据的二进制)。计算机开辟内存的最小单位是字节。在存储数据时,用最高位表示符号,1表示负数,0表示正数。
想把数字10存到内存里,首先要在内存中开辟4个字节32位的空间,开辟万空间之后,将10变成二进制的数,再将其放进去,此时才是将数据正真的存到了内存中去。但是只有4位。
00000000000000000000000000000001(高位补0)(正1)
10000000000000000000000000000001(-1)
思考:数据真的是这样存的吗?如果是,那么上面正10和-10相加应该等于0才对。但是事实并不是这样。
变为了:10000000000000000000000000000010(-2)。说明并不是以这种形式存的,需要变一变。
想要知道到底是如何存的,需要知道以下三个概念:原码、反码、补码。
原码:规定了字节数,写明了符号位,就得到了数据的原码。例如:
+1的原码就是上面的:00000000000000000000000000000001
-1的原码就是:10000000000000000000000000000001
反码:正数的反码是其原码;负数的反码是其原码的符号位不动,其他位取反。例如:
+1的反码还是:00000000000000000000000000000001
-1的反码就是:11111111111111111111111111111110
补码:正数的补码与原码相同;负数的补码是其反码加1。例如:
+1的补码还是:00000000000000000000000000000001
-1的补码就是:11111111111111111111111111111111
总结:数据的存储是以其补码形式存储的。