自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 收藏
  • 关注

原创 二.2 整数表示(2.5-2.8)

有符号数和无符号数的底层表示,以及有符号数和无符号数之间的隐式转换容易造成有趣的错误和漏洞

2025-02-19 19:34:22 549

原创 二.2 整数表示(2.1-2.4)

补码编码和无符号数的编码

2025-02-11 21:41:07 1000

原创 二.1 信息存储(1.4-1.9)

二进制是计算机编码、存储和操作信息的核心,所以围绕数值0和1的研究已经演化出了丰富的数学知识体系。这起源于1850年前后乔治·布尔(George Boole,1815-1864)的工作,因此也称为布尔代数(Boolean algebra)。布尔注意到通过将逻辑值TRUE(真)和FALSE(假)编码为二进制1和0,能够设计出一种代数,以研究逻辑推理的基本原则。最简单的布尔代数是二元集合{0,1}基础上的定义。图2-7定义了这种布尔代数中的几种运算。

2024-07-21 21:49:52 718

原创 二.1 信息存储(1.1-1.3)

大多数计算机使用8位的块,或者字节(byte),作为最小的可寻址的内存单位,而不是访问内存中单独的位。机器级程序将内存视为一个非常大的字节数组,称为虚拟内存(virtual memory)。内存的每个字节都由一个唯一的数字来标识,称为它的地址(address),所有可能地址的集合就称为虚拟地址空间(virtual address space)。顾名思义,这个虚拟地址空间只是一个展现给机器级程序的概念性映像。

2024-07-15 21:12:03 1000

原创 第二章 信息的表示和处理

通过研究数字的实际表示,我们能够了解可以表示的值的范围和不同算术运算的属性。我们研究三种最重要的数字表示。本书中,没有指定任何编译选项时,程序会按照基于ISO C90的C语言版本进行编译,但是也包括一些C99、C11的特性,一些C++的特性,还有一些与GCC相关的特性。从编码的基本定义开始,然后得出一些属性,例如可表示的数字的范围、它们的位级表示以及算术运算的属性。我们相信从这些一个抽象的观点来分析这些内容,对你来说是很重要的,因为程序员需要对计算机运算与更为人熟悉的整数和实数运算之间的关系有清晰的理解。

2024-07-12 21:09:34 985

原创 练习题答案

B.根据公式1.1,有α=0.6,要求S=1.67,可以算出k。更直接的说,要使形成加速比达到1.67X,我们必须把全程时间减少到15个小时。蒙大拿以外仍要求为10小时,因此,通过蒙大拿的时间就位5个小时。这就要求行驶速度为300公里/小时,对卡车来说这个速度太快了!A.根据公式1.1,有α=0.6,k=1.5。更直接地说,在蒙大拿行驶的1500公里需要10个小时,而其他行程也需要10个小时。则加速比为25/(10+10)=1.25X。本题要求你从特殊的角度来看公式1.1。本题是公式的简单应用。

2024-07-11 18:17:17 273

原创 一.10 小结

因为计算机花费了大量的时间在内存、I/O设备和CPU寄存器之间复制数据,所以将系统中的存储设备划分为层次结构——CPU寄存器在顶部,接着是多层的硬件高速缓存存储器、DRAM主存和磁盘存储器。在层次模型中,位于更高层的存储设备比底层的存储设备更快,单位比特造价也更高。通过理解和运用这种存储层次结构的知识,程序员可以优化C程序的性能。计算机内部的信息被标示为一组组的位,它们依据上下文有不同的解释方式。程序被其他程序翻译成不同的形式,开始时是ASCII文本,然后被编译器和链接器翻译成二进制可执行文件。

2024-07-11 18:09:49 152

原创 一.9 重要主题

在此,小结一下我们旋风式的系统漫游。这次讨论得出一个很重要的观点,那就是系统不仅仅只是硬件。系统是硬件和系统软件互相交织的集合体。它们必须共同协作以达到运行应用程序的最终目的。本书的余下部分会讲述硬件和软件的详细内容,通过了解这些详细内容,你可以写出更快速、更可靠和更安全的程序。作为本章的结束,我们在此强调几个贯穿计算机系统所有方面的重要概念。我们会在本书中的多处讨论这些概念的重要性。

2024-07-10 22:32:09 785

原创 一.8 系统之间利用网络通信

最后,telnet服务器 通过网络把输出串转发给telnet客户端,客户端就将输出串输出到我们的本地终端上。系统漫游至此,我们一直是把系统视为一个孤立的硬件和软件的集合体。从一个单独的系统来看,网络可视为一个I/O设备,如图1-14所示。相似的,系统可以读取从其他机器发送来的数据,并把数据复制到自己的主存。假设用本地主机上的telnet客户端连接远程主机上的telnet服务器。随着Internet这样的全球网络的出现,从一台主机复制信息到另外一台主机已经成为计算机系统最重要的用途之一。

2024-07-10 11:41:56 262

原创 一.7 操作系统管理硬件

让我们回到hello程序的例子。当shell加载和运行hello程序时,以及hello程序输出自己的消息时,shell和hello程序都没有直接访问键盘、显示器、磁盘或者主存。取而代之的是,它们依靠操作系统提供的服务。我们可以把操作系统看作是应用程序和硬件之间插入的一层软件,如图1-10所示。所有应用程序对硬件的操作尝试都必须通过操作系统。操作系统有两个基本功能:(1)防止硬件被失控的应用程序滥用;(2)向应用程序提供简单一致的机制来控制复杂而又通常大不相同的低级硬件设备。

2024-07-09 18:10:06 829

原创 一.6 存储设备形成层次结构

在处理器和一个较大的较慢的设备(例如主存)之间插入一个更小更快的存储设备(例如高速缓存)的想法已经成为一个普遍的概念。在这个层次结构中,从上至下,设备的访问速度越来越慢、容量越来越大,并且每字节的造价也越来越便宜。存储器层次结构的主要思想是上一层的存储器作为低一层存储器的高速缓存。因此,寄存器文件就是L1的高速缓存,L1是L2的高速缓存,L2是L3的高速缓存,L3是主存的高速缓存,而主存又是硬盘的高速缓存。在某些具有分布式文件系统的网络系统中,本地磁盘就是存储在其他系统中磁盘上的数据的高速缓存。

2024-07-09 11:57:39 229

原创 一.5 高速缓存至关重要

针对这种处理器与主存之间的差异,系统设计者采用了更小更快的存储设备,称为高速缓存存储器(cache memory,简称为cache或高速缓存),作为暂时的集结区域,存放处理器近期可能会需要的信息。系统可以获得一个很大的存储器,同时访问速度也很快,原因是利用了高速缓存的局部性原理,即程序具有访问局部区域里的数据和代码的趋势。比如说,一个典型系统上的磁盘驱动器可能比主存大1000倍,但是对处理器而言,从磁盘驱动器上读取一个字的时间开销要比从主存中读取的开销大1000万倍。

2024-07-09 11:43:02 418

原创 一.4 处理器读并解释储存在内存中的指令

此刻,hello.c源程序已经被编译系统翻译成了可执行目标文件hello,并被存放在硬盘上。shell是一个命令行解释器,它输入一个提示符,等待输入一个命令行,然后执行这个命令。如果该命令行的第一个单词不是一个内置的shell命令,那么shell就会假设这是一个可执行文件的名字,它将加载并运行这个文件。所以在此例中,shell将加载并运行hello程序,然后等待程序终止。hello程序在屏幕上输出它的消息,然后终止。shell随后输出一个提示符,等待下一个输入的命令行。

2024-07-08 22:10:39 1006

原创 一.3 了解编译系统如何工作是大有益处的

对于像hello.c这样就简单的程序,我们可以依靠编译系统生成正确有效的机器代码。但是,有一些重要的原因促使程序员必须知道编译系统是如何工作的。这本书前面3节,都在画大饼。

2024-07-08 20:27:50 338

原创 一.2 程序被其他程序翻译成不同的格式(编译)

GCC是GNU(GNU是GNU's Not Unix的缩写)项目开发出来的众多有用工具之一。GNU项目已经开发出一个包含Unix操作系统的所有主要部件的环境,但内核除外,内核是由Linux项目独立发展而来的。GNU环境包括EMACS编辑器、GCC编译器、GDB调试器、汇编器、连接器、处理二进制文件的工具以及其他一些部件。GCC编译器已经发展到支持许多不同的语言,能够为许多不同的机器生成代码。现代开放源码运动(通常和Linux联系在一起)的思想是GNU项目中的自由软件(free software)的概念。

2024-07-08 17:33:54 875

原创 一.1 信息就是位+上下文

美国国家标准学会(American Nationanl Standards Institute,ANSI)在1989年颁布了ANSI C的标准,后来C语言的标准化成了国际标准化组织(International Standards Organization,ISO)的责任。用Ritchie的话来说,C语言是“古怪的、有缺陷的,但同时也是一个巨大的成功”。hello.c的标识方法说明了一个基本思想:系统中所有的信息——包括磁盘文件、内存中的程序、内存中存放的用户数据以及网络上传送的数据,都是由一串比特表示的。

2024-07-08 15:46:40 837

原创 第一章——计算机系统漫游

全力投身学习本书,完全理解底层计算机系统一级对应用程序的影响,步入“大牛”之路,迎娶白富美,走上人生巅峰……(YYDS)

2024-07-08 11:39:01 198

原创 C++——基础复习——会议室预约系统

整体逻辑不难,主要是细心。以及UI设计如何更合理,数据控制如何更安全精准。

2024-04-13 22:01:02 998 1

原创 C++——基础复习——模拟动态数组容器

C++复习,模拟可变数组容器,复习到继承、多态;收获最大的是编程思想,解决问题的思路;条件编译和类型萃取,又看懂了一些源码。

2024-03-17 13:19:14 1051

原创 C++——基础复习——双色球

C++基础知识复习,用基础语法和一些标准库功能实现的一个双色球小游戏。

2024-02-24 22:05:09 1016

原创 C++——STL标准模板库——常用算法归纳

STL 提供的部分常用算法归纳。

2024-02-01 15:05:36 1389

原创 C++——STL标准模板库——函数对象

函数对象又叫仿函数,是为STL提供的模板算法提供自定义功能的主要措施。

2024-01-22 20:32:01 917

原创 C++——STL标准模版库——容器知识归纳汇总

容器重要知识点汇总

2024-01-22 20:30:51 472

原创 C++——STL标准模板库——容器详解——map

map容器详解,弄清楚了lower_bound函数和upper_bound函数的用法和返回值

2024-01-17 16:38:06 1469

原创 C++——STL标准模板库——容器详解——set

set容器和multiset容器详解。第一次接触对组的概念。使用中要小心迭代过程中插入或者删除元素迭代器迭代器失效的可能性。

2024-01-15 21:53:45 2776

原创 C++——STL标准模板库——容器详解——list

list:双向链表。

2024-01-12 17:22:40 1386

原创 C++——STL标准模板库——容器详解——stack+queue

STL中,stack容器(堆栈)和queue容器(队列)知识归纳

2024-01-05 10:43:43 1396

原创 C++——STL标准模板库——容器详解——deque

deque:双端队列详解

2023-12-29 09:34:46 1127

原创 C++——STL标准模板库——容器详解——string

string字符串容器详解

2023-12-18 17:06:20 159

原创 C++——STL标准模板库——容器详解——vector

vector容器详解笔记

2023-12-13 15:41:41 1294

原创 C++——STL标准模板库——初识

STL:标准模板库,Standard Template Library的缩写。是c++编程语言中重要部分,提供了一组通用模板,实现常用的数据结构和算法。是泛型编程思想的重要体现,进一步提升了复用性。STL分为六大组件:容器、算法、迭代器、函数对象、适配器、空间分配器。

2023-11-25 17:23:10 210

原创 C++——模板

模板就是建立通用的模具,大大提高复用性。是c++泛型编程思想和STL技术的主要实现。

2023-11-18 21:35:57 236

原创 C++——基于多态的职工管理系统

C++基于多态的职工管理系统

2023-10-28 16:34:11 116

原创 C++——EGE——通讯录

EGE实现通讯录,个人觉得代码有点重复冗余,欢迎大佬指正。

2023-10-12 12:06:38 436

原创 C++——文件操作

C++中输入输出是通过流对象进行操作,对于文件来说写文件就是将内容从程序输出到文件,需要用到写文件流ofstream;而读文件就是将内容从文件输入到程序,需要用到读文件流ifstream;这两个文件流类都包含在头文件中,对文件操作需要包含。

2023-08-03 17:11:34 9443

原创 C++——标准输入输出

C++输出格式,比C更灵活。

2023-06-24 16:49:57 6769

原创 C++——虚函数和纯虚函数、抽象类、虚析构和纯虚析构

C++虚函数、纯虚函数、虚析构、纯虚析构,其中虚函数的原理为重点

2023-06-17 21:14:07 8716

原创 C++——多态

动态多态,通过对含有虚函数的父类继承,并在子类中重写虚函数实现。

2023-06-11 17:29:57 411

原创 C++——继承

利用已有的数据类型来定义新的数据类型。通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。利用继承技术,可以大大减少代码的重复量。class<派生类名>:<继承方式><基类名><派生类新定义成员>例如:class A:public B{};A称为B的派生类或子类,B称为A的基类或父类。派生类中的成员,包含两大部分。

2023-06-10 22:25:07 381

原创 C++——运算符重载

C++——运算符重载,友元。

2023-06-08 22:09:33 4577

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除