计算机基础小整理

一、CPU 在平时写的程序可以视为数据和指令的组合体,所有的程序都是copy了一份到内存中才能运行,内存地址是指在内存中保存命令和数据的场所,通过地址来标记和指定。地址是由一系列整数值构成。 程序员编写的程序会先转换成C系列语言,再编译转换成机器语言的exe文件,运行时再在内存中生成副本,由CPU解释并执行程序。 计算机现在的主流都是冯·诺伊曼结构,当然还有λ架构,神经网络架构等 CPU的组成: 寄存器:暂存指令,数据等处理对象 控制器:把内存上的指令读进寄存器,根据指令结果控制计算机 运算器:运算从内存读进去的数据 时钟:CPU开始计时的信号 内存是指计算机的主存储器,通过控制芯片等与CPU相连,负责存储指令和数据,每字节(一字节=8位)都有一个地址编号。 机器语言指令分为: 数据转送 运算 跳转 call/return 二、二进制小结 所有数据在计算机内部都是转成了二进制数据,计算机才不会管它是数值,文字还是图片。 二进制转十进制 int('11',2) Out[16]: 3 十进制转二进制 bin(10) Out[17]: '0b1010' 移位运算,先拿十进制,我们熟悉的做一个比方,例如:30 30 左移一位:300,扩大了十倍 右移一位:3,缩小了十倍 这就是移位的核心,移动几位,变大和减少的数值就是你所使用进制的基数,只不过二进制你要考虑到负数 具体看看: bin(39) Out[18]: '0b100111' bin(0b100111 >>1) Out[20]: '0b10011' 0b100111 >>1 Out[19]: 19 在二进制中表示负数,是用最高位作为符号位,0表示正数,1表示负数。 但是计算机在做减法运算时,实际上是加法运算,通过位溢出来处理,也就是取反加1 逻辑右移:移位后,在最高位补0 算术右移:移位后,在最高为补上原来的符号数 三、浮点数 先来看: sum = 0 for i in range(100): sum += 0.1 sum Out[28]: 9.99999999999998 是不是很奇怪? 这就牵扯到二进制表示小数了 例如二进制1011.0011怎么表示成十进制,就是小数点后面的位权改成1/2的倍数,结果就是11.1875 浮点数就是使用符号,尾数,基数和指数来表示小数 其实说到这里,大家应该明白为啥浮点数会出错了吧。 各个语言都有自己的机制去解决这个问题 四、内存概论 数据类型:存储在内存的大小和和该区域的数据类型 内存实际上一个内存IC,IC引脚的开关表示着0和1,通过地址去确定这些IC。 磁盘缓存:将磁盘一部分数据读进内存 虚拟内存:把磁盘的一部分作为内存使用。把实际内存的内容和磁盘上的虚拟内存的内容进行部分置换,同时运行程序。 有两种方式:分页和分段 windows采取的是分页式,在不考虑程序的构造的情况,把运行的程序按照一定大小的页进行分割,以页为单位在内存和磁盘中置换。 五、压缩数据 文件就是字节数据的集合 RLE算法: 使用字符*重复次数进行压缩。 哈夫曼算法: 多次出现的数据用小于8位的,不常用的数据用多于8位的表示 哈夫曼树解决分隔符问题: 按出现的频率排序,以两个最小的数拉出一条线枝干,左边是0,右边是1,以此类推

原文发布于微信公众号 - 鸿的学习笔记(shujuxuexizhilu)

原文发表时间:2017-08-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PHP在线

URL短链接实现方法

最近项目开发中,需要实现URL长链接转短链接的需求,于是在网上找了一些资料,顺便整理了下,欢迎有想法的童鞋踊跃留言,我们共同探讨。 一.短链接的好处 1.内...

1.4K140
来自专栏散尽浮华

Linux下的计算命令和求和、求平均值、求最值命令梳理

在Linux系统下,经常会有一些计算需求,那么下面就简单梳理下几个常用到的计算命令 (1)bc命令 bc命令是一种支持任意精度的交互执行的计算器语言。bash内...

50870
来自专栏ImportSource

图解Fork/Join

Fork/Join是在Java7中提供的一个并发执行任务的框架。他的基本运行流程就是:把一个大任务分解成子任务,如果子任务还不是足够小,就继续分解成子子任务,一...

20420
来自专栏程序猿DD

Java中的即时编译(Just-in-time compilation)

作者:知秋 原文:http://t.cn/RYLPEMc 像其他一些编程语言一样,Java通常也被称为“编译语言”。但有时你可能会感到困惑,尤其是当有人告诉你J...

24850
来自专栏用户画像

浅析JVM

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模...

9520
来自专栏xingoo, 一个梦想做发明家的程序员

Elasticsearch聚合 之 Histogram 直方图聚合

Elasticsearch支持最直方图聚合,它在数字字段自动创建桶,并会扫描全部文档,把文档放入相应的桶中。这个数字字段既可以是文档中的某个字段,也可以通过脚...

237100
来自专栏海天一树

小朋友学C语言(42):gets和fgets

这里可以看出来,定义了s的长度为3,但是用gets()输入字符串的时候,并不会去检查字符串的长度,所以导致char的值不是a,而是”uvwxyz”中的第四个字符...

22010
来自专栏python3

习题34:模块,类,对象

创建一个名字叫mystuff.py文件,并且在里面放了个叫做apple的函数,代码如下

11140
来自专栏Python

python常用模块

 python常用模块 什么是模块?    常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。    但其实i...

395110
来自专栏决胜机器学习

《Redis设计与实现》读书笔记(二) ——Redis中的字典(Hash)

《Redis设计与实现》读书笔记(二) ——Redis中的字典(Hash) (原创内容,转载请注明来源,谢谢) 一、概述 字典,又称符号表、关联数组、映射,是一...

415100

扫码关注云+社区

领取腾讯云代金券