csapp
文章平均质量分 57
学习记录
榆钱不知秋
请多喝水
展开
-
判断两个有符号数相乘是否会溢出
判断两个有符号数相乘是否会溢出原创 2022-06-06 16:54:25 · 1022 阅读 · 0 评论 -
判断补码加法是否溢出
补码加法的溢出有两种情况:正溢出,负溢出原创 2022-06-06 16:32:53 · 736 阅读 · 0 评论 -
判断无符号加法是否溢出
无溢出返回1,溢出返回0原创 2022-06-06 15:37:08 · 185 阅读 · 0 评论 -
加法逆元(a^a=0)异或操作,这个并没有性能上的优势,只是一个智力游戏
#include <stdio.h>void inplace_swap(int *x, int *y) { *y = *x ^ *y; *x = *x ^ *y; *y = *x ^ *y;}int main() { int x = 29; int y = 33; printf("%d %d\n", x,y); inplace_swap(&x,&y); printf("%d %d\n", x, y); return 0;}运行结果:..原创 2022-04-20 21:42:05 · 2499 阅读 · 2 评论 -
csapp 信息存储
信息在计算机系统内是如何存储的通常情况下,程序将内存视为一个非常大的数组,数组的元素是由一个个的字节组成,每个字节都由一个唯一的数字来表示,我们称为地址,这些所有的地址的集合就称为虚拟地址空间。字节是信息存储的基本单元。一个字节是由8个位组成,在二进制表示法中,每一个位的值可能有两种状态,0或者1。如果用十进制来表示,那么一个字节的取值范围就在0~255之间,我们把这种按照一位一位表示数据的方式称为位模式。使用二进制表示法比较冗长,而十进制表示法与位模式之间的转换有比较麻烦。因此,我们引入十六进制原创 2022-01-17 22:46:49 · 113 阅读 · 0 评论 -
csapp 远程连接与系统性能的提高
网络之前我们一直将计算机系统作为一个孤立的硬件与软件的集合体,从一个系统来看,网络也可以视为一个IO设备。远程连接随着互联网的发展,从一台计算机发送消息到另一台计算机已经成为非常普遍的应用,深入理解计算机的原书中,讲述了如何使用本地计算机上的telnet客户端连接远程主机上的telnet服务器,由于telnet的安全性问题,目前ssh的连接方式的更加普遍。远程连接结合hello程序1.在ssh的客户端中输入hello字符串并且敲下回车;2.客户端的软件就会通过网络将字符串发送到ssh服务端;原创 2022-01-16 21:33:43 · 203 阅读 · 0 评论 -
csapp 操作系统
应用程序与硬件的关系从上一章讲起,无论是shell程序还是hello程序都没有直接访问键盘,显示器,磁盘这些硬件设备,真正操纵硬件的是操作系统,它是应用程序和硬件的中间层,所有的应用程序对硬件的操作必须通过操作系统来完成,如下图所示,这样设计有两个主要目的:1.防止硬件被失控的应用程序滥用;2.操作系统提供统一的机制来控制这些复杂的底层硬件。操作系统为了实现上述功能,操作系统引入了几个抽象的概念:就是说,1.文件是对IO设备的抽象2.虚拟内存是对内存和磁盘IO的抽象3. 进程是对处理器原创 2022-01-15 23:46:33 · 2052 阅读 · 0 评论 -
csapp运行hello程序,当程序执行的时候到底发生了什么?
运行hello文件此时可执行目标文件hello已经存放在系统的磁盘上,我们现在要做的是运行这个程序。这里介绍一下shell ,在linux操作系统中同时按下ctrl + alt +T就可以打开一个shell,也就是我们在windows里面说的命令行。ctrl+shift+T就可以打开一个shell。通过上面说的方法打开一个shell:打开hello可执行文件所在的文件夹:...原创 2022-01-13 22:38:05 · 253 阅读 · 0 评论 -
CSAPP Hello程序
对hello.c程序生命周期的理解先在Documents创建一个文件就叫做csapp并在里面再建一个文件夹hello_world接下来就打开命令行,点击 New Terminal安装vim这个c语言编辑器,一般linux系统就自带了,可以升级一下,这里提示是最新版本,就不用管了。然后进入我们刚刚创建的那个文件夹,创建 hello.c在hello.c里面写如下代码然后,退出来,对源代码进行编译,生成可执行文件hello这种编译可以分成四个阶段,如下图:第一阶段:预处理会根据以#开头的原创 2022-01-13 12:55:13 · 258 阅读 · 0 评论