一、计算机原理
1. 计算机的组成
计算机之父:冯.诺依曼
计算机包含了5各部分:输入设备、输出设备、运算器、控制器、存储器
输入设备:
键盘、鼠标
输出设备:
显示器、音响
机箱:
cpu 内存:运行内存 硬盘:持久化存储数据(只要数据不删除,会一直存在) 显卡
cpu:
中央处理单元 担任着计算机的运算和控制的核心 相当于人的大脑
内存:
运行内存----内存条对应着内存的大小
计算机运行数据产生的临时数据会存放在内存中,不会持久化存储(当程序运行结束,关机,重启)
运行中使用的一些数据,必须得在内存中存在才可以使用
硬盘:
存储的是资料等大型数据 特点:持久化存储
显卡:
控制画面的显示
2. 软件的开发
软件:应用程序
一些特定数据和指令的集合
开发-----行为
软件分类:
系统软件:特殊的软件 可以承载其他应用软件
windows mac linux
应用软件:
游戏软件 聊天软件等等
3. 人机交互
人机交互的方式:
图形化界面和指令交互两种方式
图形化界面交互方式:操作简单入手容易
指令交互:
需要有一个平台来承载指令的输入----控制台----命令提示符工具
打开 命令提示符:
win+r----->输入框----输入cmd
打开命令提示符:
初始显示的是当前使用用户的路径
1.进入其他路径 分为两种情况: a.该路径和当前路径在同一个盘符(c/d)下 cd 进入的目录路径 又分为两种情况 i.进入的目录是当前目录的子目录 cd 子目录的名称(如果目录名称太长 可以使用tab键自动补全,用tab补全目录名 称时,要在英文状态下进行) ii.进入的目录与当前目录没有关系 cd 盘符:\...指定目录的名称 b.该目录和当前目录没有再同一个盘符下 第一步:切换盘符 盘符名: ----> 切换盘符 第二部: cd 要打开的指定目录路径 c.另外的打开模式: cd.. ----> .. 表示的是上一级目录 ---> 回到上一级 cd/ ----> /表示的是根目录 表示的盘符 2.显示当前路径下的子目录[包含子文件] dir 3. 创建文件夹[目录] md 文件夹名称 ----> md的全称: make directory 如果只有一个名称 会在当前指定的路径下创建一个改名字的文件夹 还可以跟一个路径 如果路径中的目录存在直接使用 如果不存在会创建 4.删除文件夹 rd 文件夹名称 如果有多级, 只能删除最后一级目录 删除的文件夹必须是空文件夹 5.创建文件 echo 内容 > 文件路径 echo 内容 >> 文件路径 echo ----> 表示的是输出的意思 ---> 输出的内容默认是显示在命令提示符工具[控制台]上的 重定向: > --- 如果他后面的文件存在 会清除掉文件中的内容 再将echo后面的内容写入 --- 如果文件不存在 会先创建文件 再将内容写入 >> ---如果他后面的文件存在 不会清除掉文件中的内容 而是将echo后面的内容拼接在原有内容的后面 --- 如果文件不存在 会先创建文件 再将内容写入 文件路径: 如果只有一个文件名 --- 表示该文件在当前指定的路径下 6.查看文件中的内容的指令 type 文件路径.文件后缀名 [可以通过上下键 查询之前写过的指令] 7. 删除文件 del 文件路径.后缀名 --- 删除指定文件 del *.后缀名 ---- 删除同一个后缀名的所有文件 del 文件路径.* ---- 删除同一个名字的所有文件 del *.* ---- 删除所有文件 8.清空控制台 cls 9.文件拷贝 --- 只能操作文件 copy 源文件路径.后缀名 目的文件路径.后缀名 拷贝的时候 拷贝的文件中的内容 10.文件剪切 ---- 只能操作文件 move 源文件路径.后缀名 目的文件路径.后缀名 11. 退出控制台 exit 指令交互的时候必须是计算机识别的指令, 这种方式用户难以入手的原因是需要记住对应的指令操作
4. 计算机中数据存储的格式
1.进制: 人们规定的一种进位方式,逢n进1 常接触到的进位方式: 十进制 二进制 八进制 十六进制 每种进制的符号集: 十进制的符号集:0 1 2 3 4 5 6 7 8 9 十进制中写一个10=09+01---->10 二进制的符号集: 0 1 二进制中的10 ===> 01 + 01 ===> 10 ====> 十进制中的数据对应的2 表示二进制的符号: 0b / 0B 0b10101011 八进制的符号集: 0 1 2 3 4 5 6 7 八进制中的10 ===> 07 + 01 ===> 10 ====> 十进制中的数据8 表示八进制的符号: 0o / 0O 0o453 十六进制的符号集:0 1 2 3 4 5 6 7 8 9 a b c d e f 十六进制中10 ===>0f + 01 ====>10 ====> 十进制中数据对应的是16 十六进制的符号: 0x / 0X 0xfae
2.不同的进制中每一位上的数据的意义 熟悉十进制数据 12345 ====> 1 * 10^4 + 2* 10^3 + 3*10^2 + 4 *10 + 5 * 10^0 二进制上每一位数据的意义: 0b1011 ====> 1 * 2^3 + 0 * 2^2 + 1*2^1 + 1 * 2^0 =====> 8 + 0*4 + 2 + 1 假设每一位都是1 前面一位和后面一位的关系是 2倍的关系 32 16 8 4 2 1 二进制上每一位的数据 = 2^(n-1) 如果这一位上是1 ---> 该位对应的数据等价于 2^(n-1) 如果这一位是0 ----> 0 不同的进制中每一位上的数据的意义: 该位上的数据 * 对应进制^(n-1) ===> n表示的是位数
3.进制转换: a.十进制转化为二进制: 有两种方式: i.将十进制的整数部分除以2取余数,除到商为0为止, 将余数倒叙取出 将十进制的小数部分乘以2取整,乘到小数全部为0为止, 将整数正序取出 ii.从二进制上每一位数据的意义上得来的=====> 8421转换码 位数 3 2 1 0 -1 -2 -3 数据值 8 4 2 1 0.5 0.25 0.125 在二进制上每一个数据的意义上找到与其接近小于其的数据 做差 再将差值与二进制上每一个数据的意义找到与其接近小于其的数据 做差 一直做差到差值为0 17 ---> 16 17 - 16 = 1 1----> 1 1-1 = 0 0.75 = 0.5 + 0.25 10001.11 17.75 ---> 二进制数据 49 ----> 二进制数据 32 + 16 + 1 110001 练习: 77 ====> ====> 64 + 8 + 4 +1 ====> 1001101 51 ====> 110011 ====> 32 + 16 + 2 + 1 110011 61.375 =====> 11101.011 ====> 32 + 16 + 8 + 4 + 1 111101.011 ------------------------------------------------------------------------------------ b.二进制/八进制/十六进制转化为十进制 将对应进制每一位上对应的数据进行累加 结果就是十进制 ====> 按权展开求和 二进制转换为十进制 0b1011101 ----> 1 + 0 + 4 + 8 + 16 + 0 + 64 ====> 93 八进制转化为十进制 0o34 ---> 4 * 8^0 + 3 * 8^1 = 28 十六进制转化为十进制 0xaf ----> f * 16^0 + a * 16^1 ====> 15 + 10 * 16 = 175 练习: 二进制转化为十进制: 0b110110 = 54 0b1011101 = 93 ------------------------------------------------------------------------------------- c.二进制转化为八进制 转化规则: 八进制的最大符号集是7 ----> 对应着二进制中3位数 也就意味着二进制中3位数能够满足八进制中的所有符号集 将二进制数从右向左三三一分 如果左边不够三位前面补0 将每一份按权展开求和 再将每一份对应的和从左向右拼在一起 结果就是八进制 0b001 110 111 001 010 110 1 6 7 1 2 6 ----> 0o167126 ------------------------------------------------------------------------------------- d.二进制转化为十六进制 转化规则: 十六进制的最大符号集是f(15) ----> 对应着二进制中4位数 也就意味着二进制中4位数能够满足十六进制中的所有符号集 将二进制数从右向左四四一分 如果左边不够四位前面补0 将每一份按权展开求和 再将每一份对应的和从左向右拼在一起 结果就是十六进制 0b1110 1101 0101 0001 1110 e d 5 1 e ----> 0xed51e 练习: 二进制转化为八进制 0b 010 110 110 ----> 0o266 0b 011 011 011 -----> 0o333 二进制转化为十六进制 0b 0001 0110 1101 ----> 0x16d 0b 0001 1100 1011 -----> 0x1cb
5. 编码
计算机中是存储数据的,但是数据的格式是二进制形式的
生活中处理的数据(整型数据)或者一堆字符拼在一起的数据,这些数据看起来和二进制毫无关联
在计算机中存放一个名字:暴维
字符:一个符号就称为字符
规则:
十进制与二进制可以关联
将字符也对照一个对应十进制数---->这个数据对应的二进制数
字符 <---> 十进制数据 <---->二进制数据
指定字符与十进制数据之间的规则 这张表称为ascii码表
在ascii码表中 使用的是8位二进制数来进行表示对应的不同符号的
8位二进制数 === 1个字节 1B
前面四位称为高四位 后面四位称为低四位
0这个符号来进行存储时 规定0这个符号对应的十进制数据是48 ----> 0011 0000
A这个符号 对应的十进制数是65 ----> 0100 0001
a这个符号 对应的十进制数据是97 ----> 0110 0001
在ASCII码的基础上进行了拓展出了Unicode/GBK编码方式
Unicode这种编码规范 常用的是UTF-8这种编码方式, 特点:可以采用变长的存储形式在内存中存储数据
UTF-8和GBK的区别:
中文符号
UTF-8 占3个字节
GBK 占2个字节
英文符号
不管是哪种编码方式都是占用1个字节
6. 计算机中数据运算二进制的存在形态
二进制数据的形态有三种:原码 反码 补码
以整数数据数据为例 进行运算操作
数值会有正负之分 -----> 二进制数是如何来区分正负的???? -----> 在内存中存放数据时 该数据所占用的二进制数位数确定的, 正负看该二进制数的最高位[机器位], 如果最高位为1, 表示该二进制数代表的是负数, 如果为0, 表示的是正数
数据在内存中存放, 存放单位是字节 ,一个字节是8位二进制数
计算机中内存单位的换算: 一个0或者一个1称之为1位 --- 1bit ---> 1b 计算机中存放数据最少得使用8b二进制数 ---> 1字节 ---> 1Byte ---> 1B 1B = 8b 1KB = 1024B #是二进制存放形式 在十进制中1km = 1000m 1MB = 1024KB 1GB = 1024MB 1TB = 1024GB
假设 数据存放的时候 都占用1个字节 --- 在程序中真实使用的话 整数是占4B 正数的原码 反码 补码的格式与原码是一致的 原码直接将十进制数据转化为二进制数 27 ----> 16 + 8 + 2 + 1 ---> 0001 1011 负数的原码: 在正数原码的基础上 将最高位置为1 -27原码 ----> 1001 1011 负数的反码: 在负数原码的基础上 除了最高位 其余位取反[0变1 1变0] -27的反码 -----> 1110 0100 负数的补码: 在负数的反码的基础上加1 -27的补码 -----> 1110 0101 计算机存放二进制数据时 数据的格式到底是原码 还是反码 还是补码呢??? 排除法: 假设是以原码的形式存放的 -2 + 1 ====> -1 -2的原码: 1000 0010 1的原码 0000 0001 --------- 1000 0011 [原码] ----> -3 [查看二进制数对应的准确的十进制数 查看的二进制数的原码形式] 假设是以反码的形式存放的 -2 + 1 =====> -1 -2的反码: 1111 1101 1的反码 0000 0001 ---------- 1111 1110[反码] ---> 1000 0001 ----> -1[对了] -1 + 2 ====> 1 -1的反码: 1111 1110 2的反码: 0000 0010 ---------- 1 0000 0000 1相对于原有的容器大小存放不下 --- 溢出 ---> 溢出的内容直接舍弃 容器中剩下 0000 0000 ----> 0 [错了] 假设以补码来运算 -1 + 2 = 1 -1的补码: 1111 1111 2的补码: 0000 0010 --------- 1 0000 0001 0000 0001 ----> 1[对了] -2 + 1 ====> -1 -2的补码 1000 0010 1111 1101 1111 1110 1的补码 0000 0001 --------- 1111 1111[补码] --- 原码 减1的反码: 1111 1110 取反得原码: 1000 0001 ----> -1[对了] 结论: 计算机中二进制数据的存放形态是补码形式
练习: 17-22 17的补码: 0001 0001 -22的补码 1110 1010 --------- 1111 1011[补码] ----> 1111 1010[反码] ----> 1000 0101 ----> -5 -31+40 -31的补码 1001 1111 1110 0000 1110 0001 40的补码 0010 1000 --------- 1 0000 1001 ----> 9
7. 计算机语言
利用计算机识别的语言[可以转义成计算机识别的语言] 来编写软件程序
c c++ objective-C java php Python
Python:
可以做的事情:
web网站 — 后台
爬虫
数据分析 — 线性代数 概率论 微积分
Python语言 ----> 先学的是语法 —> 众多语言通用的[可能写法不同]
先有一个语言环境 — 安装Python环境
点击安装 install now ---> 安装在默认路径下[不选] custom install ----> 自定义目录安装 [要选] 勾选 add Python to Path ----> 是将python环境的路径添加到环境变量中 作用:可以在计算机任意目录下都可以访问python环境 点击next 再点解next --- 选择路径 将Python环境添加在一个独立文件夹中 不要与其他其他软件搅合在一起 接下来就是安装了
将python路径设置到环境变量中的意义
如果想查找一个文件 --- 需要先切换到该文件所在的目录
安装的时候忘记勾选 add Python to Path 不能再任意目录下进入到Python环境中了 可以自己将路径添加到环境变量中 windows10 进入环境变量path字段下 点击新建 一个路径 占一条 编辑完成3个确定 一个都不能少 windows7中 进入环境变量path字段下 在字段对应的值中将每个路径使用;分开即可 %USERPROFILE%\AppData\Local\Microsoft\WindowsApps;C:\Python\Python36\Lib\site-packages\django\bin;C:\Python\Python36\Scripts;C:\Python\Python36; 编辑完成之后三个确定
将路径添加到环境变量中路径查找优先级 当执行对应指令的时候 会在环境变量对应的Path路径中去查找, 如果找到直接执行指令 如果找不到, 会查看指令书写时控制台前面的路径 在这个路径下进行查找 找到执行指令 如果找打不到提示该指令不是内部或者外部命令 无法执行