笔记1_算法,程序设计,语言等_哈佛_计算机科学cs50_David J. Malan

1.从0开始计数,而不是1的原因

数字系统被简化为只有0与1的基本思想,无论0还是1都占据一个位数,都有和它相关的权数。自然,我们就从0开始计数。否则就浪费了一个比特位。

比特(BIT)是binary digit的简写,从0到1的数字,而bi表示2.所以就有两个数字,因此bit诞生了。

ASCII码,可以表示键盘上的字符。

8个bit是一个byte,可以表达256个可能的字符,可以包含整个美式键盘中的字符,包括大小写字母和一连串标点。对于其他语言,当涉及更多字符时就会有其他的编码体系。

当敲击键盘上的字母A时,在计算机二进制存储中为01000001,就表明键入了A。

RAM暂时存放正在使用的程序和文件,而且会加快电脑速度;硬盘是程序和文件永久存储的地方

2.计算机采用二进制的原因

主要是因为当我们用一台实体机运行计算机时,二进制很容易用开或者关的概念来表示。

计算机的硬盘只是一个大的铁容器,它由若干磁盘组成,这些金属电路板和它们的上面都是看不到的很小的磁性粒子,如果触碰他们或打开硬盘戳弄它,你就破坏了它,因为改变了他们的排列顺序,就损坏了数据。一个磁性粒子很容易代表0或1,只要一个有南北极磁性物体。电脑硬盘完全是有一簇按照这种方式排列的磁性粒子。

The hard drive is where your PC stores most of its permanent data.To do that the data travels from ARM along with software signals that tell the hard drive how to store that data.The hard drive dircuits translate those signals to voltage fluctuatios. These
in turn control the hard drive‘s moving parts.Some of  the few moving parts left in the modern computer.Some of the few moving parts left in the modern computer.Some of the signals control a motor which spins metal-coded platters. Your data is actually stored
on these platters. Other signals move the read/write heads to read or write data on the platters.This machinery is so precise that a human hair coudn‘t even pass between the heads and spinning platters, yet it all works in terrfic speeds.

3.如何把电磁信号转换为0和1

When a brief pulse of electricity is sent to the read/write head it flipson a tiny electromagnet for a fraction of a second. The magnet creates a field which changes the polarity of a tiny, tiny portion of the metal particles which coat each platter‘s surface.A
patterned series of these tiny  charged berries on the disk represents a single bit of data in the binary number system used by computers.Now , if the current is sent one way through the read/write head, the area is polarized in one direction. If the current
is sent in the opposite direction, the polarization is reversed.

How do you get data off the hard disk?Just reverse the process. So as the particles on the disk that get the current in the read/write head moving put together millions of these magnetized segments and you‘ve got a file.Now, the pieces of a single file may
be scanning all the hard drive‘s platters, patterns——the mess of papers on your desk. So the special active file keeps track of whatever you missed.

4.当格式化一个软盘或硬盘时会发生什么?

事实上,没有什么改变。格式化或者分区通常只是修改了几个或几千字节有价值的信息。最终的结果是电脑不知道文件或者文件夹在哪里存着,但是组成这些文件的字节还在原来的地方存储着

5.关于碎片整理

硬盘驱动器有时需要这么做,因为当开始对硬盘驱动器进行读写时,保存一个文件到磁盘的某处,现代操作系统允许文件进行分块处理,最后文件变成分片的,操作系统根据文件的地址,能找到文件的地址,这也导致了潜在速度变慢。在硬件性能如此好的今天,碎片处理显得并不是那么的重要。

6.读取磁盘里的数据

硬盘驱动器里面有一个电路板,因此它本身知道如何该上下左右移动,安装到电脑上的驱动软件,操作系统通过驱动软件电脑才能知道如何与这个硬件进行通信。正是因为这个驱动软件,操作系统才能根据数据在磁盘中的存储情况,通过发送上下左右移动的指令读取磁盘里的数据

7.固态硬盘(SSD)的优点和工作原理

固态硬盘是发展方向,固态硬盘就像紧凑型闪存或SD卡。几年来我们可以在相机的存储设备里存入千兆字节,甚至不久以后可以存入兆兆字节。设备里没有移动部件,一般的说,这些设备存取速度更快,因为他们没有移动部件。即使一个硬盘驱动器的转速达到每分钟7200次,甚至更快,仍然比光速慢。因此,当你拥有一个设备,无论它是否是纯电子的,数据位并不能以现实中的光速传输,这对一个设备来说太快了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-13 09:07:37

笔记1_算法,程序设计,语言等_哈佛_计算机科学cs50_David J. Malan的相关文章

(读后摘抄)《计算机程序设计语言的发展》_王汝传

原文是<电子工程师>里的一篇文章,以下是部分内容摘抄 第三代计算机语言:   Fortran语言 当时主要是用于科学计算 ,它 与汇编语言助记符的本质区别是引入了变量的概 念.它奠定了程序设计语言名字的理论基础 ,同时引 入了表达式.语句和子程序等概念 ,也是高级程序设计语言的基础.因其高效 率与完善的输入输出功能而受到人们的欢迎 ,至今 在科学计算领域仍充满生命力. Algol语言 孕育了许多很有用的程序设计与程序设计语 言思想 ,如自由程序格式.保留字.数据类型.分程序 概念.子程序调用方

算法程序设计题语言类笔记

1. 求幂 #include<math.h> //头文件 pow(a,b); //a^b 2. bool #include<stdbool.h> //C中使用bool型需要加入头文件 3. 字符串操作相关 #include<string.h> //头文件 char a[20],b[20]; strcpy(a,b); //把字符串b拷贝到a中 length=strlen(); //求长度 strcmp(a,b); //字符串比较,将a和b中的字符逐个比较,相同继续比较下一

C++ Primer笔记1_转义字符_标准库类型string_标准库类型vector

1.转义字符 一般有两种方式: \x后紧跟1个或多个十六进制数字.或\后紧跟1.2.3个八进制数字,当中数字部分是字符相应的数值. #include <iostream> using namespace std; int main() { bool b = 10; bool b1 = true; bool b2 = false; cout << b << endl; cout << b1 << endl; cout << b2 <

python程序设计语言笔记 第一部分 程序设计基础

1.1.1中央处理器(CPU) cpu是计算机的大脑,它从内存中获取指令然后执行这些指令,CPU通常由控制单元和逻辑单元组成. 控制单元用来控制和协调除cpu之外的其他组件的动作. 算数单元用来完成数值运算(加减乘除)以及逻辑运算(比较) 现在的cpu都是镶在一块小小的硅半导体芯片上,这块芯片上有数百万个被称作晶体管的小电子开关来处理信息. 每台计算机都有一个内部时钟,该时钟会以一个稳定的速度发射电子脉冲,这些脉冲用于同步和控制各种操作的的步调.时钟速度越快,给定时间内执行的指令就越多.时钟速度

读书笔记之:C语言深度剖析

读书笔记之:C语言深度剖析 <C 语言深度解剖>这本书是一本“解开程序员面试笔试的秘密”的好书.作者陈正冲老师提出“以含金量勇敢挑战国内外同类书籍”,确实,这本书中的知识点都是一些在面试中常见的考点,并且很多都是我们平常不注意的点,对于我们深入理解C语言确实很有帮助. 第1章关键字 1.register虽然寄存器的速度非常快,但是使用register修饰符也有些限制的:register变量必须是能被CPU寄存器所接受的类型.意味着register变量必须是一个单个的值,并且其长度应小于或等于整

数据结构算法C语言实现(八)--- 3.2栈的应用举例:迷宫求解与表达式求值

一.简介 迷宫求解:类似图的DFS.具体的算法思路可以参考书上的50.51页,不过书上只说了粗略的算法,实现起来还是有很多细节需要注意.大多数只是给了个抽象的名字,甚至参数类型,返回值也没说的很清楚,所以很多需要自己揣摩.这也体现了算法和程序设计语言的特点,算法更侧重本质的描述,而任何编程语言都要照顾到实现的细节以及数据类型等语法方面的需求. 表达式求值: [编码中....] 二.头文件 迷宫求解: 1 //3_2_maze.h 2 /** 3 author:zhaoyu 4 email:[em

程序设计语言基本概念语 与经典真题

一.基本概念 在计算机中,程序设计语言可划分为低级语言和高级语言两大类,与高级语言相比,用低级语言开发的程序,其运行效率高,但开发效率低.与程序设计相关的基本概念如下. (1)低级语言:又称面向机器语言,它是特定的计算机系统所固有的语言. (2)汇编语言:是机器语言的一种提升,它使用了一些助记符来表示机器指令中的操作码和操作数.但它仍然是一种和计算机机器语言十分接近的语言,使用起来仍然不太方便. (3)高级语言:与人们的自然语言比较接近,使用起来很方便,也极大的提高了程序设计效率. (4)编译程

程序设计语言-标准库概述

1 认识标准库 没有任何一个重要程序只用某种赤裸裸的程序设计语言写出的:首先总要开发出一组支持库,这也形成了进一步工作的基础. 2 第一个程序 #include<iostream>  //指编译器包含位于iostream里的标准流I/O功能的声明 int main() //定义一个main()函数,该函数没有参数,也不做任何事情 { std::cout<<"hello,world!\n"; //字符串文字量"hello,world!\n"将被

对于《C程序设计语言》的一点理解

想必学C语言的人大都看过这一经典书籍.对于我来说,处于不同学习层次,阅读这本书的感觉是不一样的,每次阅读都会有一番新的感悟.第一次阅读时先读的英文版,读的很困难,主要是记录不会的单词:第二遍就顺利多了,但是对于其中的内容缺乏较深入的了解:第三遍就直接买了机械工业出版社出版的中文版,尝试读了一遍,但是对于后面几章特别是指针部分几乎读不下去:然后就开始做上面的练习,主要是做了前6章的练习,这其中费了不少时间和精力,还有一部分练习没有做. 对了,需要对这一分类下的博文做出几点说明. ①笔记中所说的[教