- 博客(101)
- 收藏
- 关注
原创 cmu15213/csapp实验1——datalab过程记录
本文介绍了CMU 15-213课程的datalab实验,重点讲解了位操作相关puzzles的解法思路。实验要求在WSL环境下完成,通过btest和dlc工具检测结果正确性和合规性。文章详细分析了bitXor、tmin、isTmax等9个经典位操作问题的解决方案,包括利用德摩根定律实现异或、补码极值的判断、条件语句的位运算模拟等。每个解决方案都给出了核心代码和验证截图,并讨论了可能的边界情况处理。实验涉及32位整数和单精度浮点数的位操作技巧,展示了位运算在实际计算机系统中的应用。完整代码已开源在GitHub上
2025-08-07 10:43:06
852
1
原创 【CSAPP全书详细笔记系列】第二章-信息的表示与处理
本章介绍了计算机系统中三种重要的数字表示方法:无符号数、补码和浮点数编码。主要内容包括:1) 计算机存储信息的基本单位是字节,采用虚拟内存地址空间概念;2) 不同机器采用大端法或小端法存储数据;3) C语言中字符串、代码和布尔运算的表示方式;4) 整数数据类型的取值范围及编码原理,重点阐述了无符号数和补码的定义及其唯一性;5) 补码编码的最小/最大值计算公式。本章为理解计算机底层数据表示奠定了基础,后续将介绍浮点数编码和运算相关内容。
2025-08-05 10:46:07
661
1
原创 【CSAPP全书详细笔记系列】第一章-计算机系统概述
计算机系统基础与程序执行原理 该文章系统介绍了计算机程序从编写到执行的全过程,主要内容包括: 信息表示:计算机中所有信息都以比特位表示,通过上下文区分数据类型,文本文件采用ASCII标准编码。 编译过程:详细阐述了C程序通过预处理、编译、汇编和链接四个阶段转换为可执行文件的过程,每个阶段产生不同格式的中间文件。 硬件组成:描述了计算机系统的总线、I/O设备、主存和处理器等核心硬件组件及其交互方式,重点解释了程序计数器的作用。 程序执行:以hello程序为例,说明从磁盘加载到内存执行的全过程,包括数据在硬件间
2025-08-04 09:35:39
1023
原创 迭代法求解leetcode396旋转函数
先思考暴力做法,遍历每一种旋转后的数组arrk,对每一个arrk求一次F函数,但是时间复杂度是平方级别的,而n=10^5,必然超时,因此必须求出来一种线性或对数复杂度的算法。我们继续思考发现,对数组的旋转实际上可以转换为对“每个数组系数的旋转”,因此,我们会发现以下规律:据此我们确定迭代思路:首先求出旋转之前的F函数,随便再迭代n-1次,在每一次迭代中,将其中一个元素的出现次数增加n-1,再将其它元素的出现次数减1,不断更新迭代值,每次求出新迭代值时假如大于当前答案就更新答案。
2025-05-13 11:31:23
428
原创 对代码随想录中回溯算法去重和used数组的理解
而结点2包含的所有情况是:在组合[1]的基础上,在[1,1,1,2]中进行其余元素的选取,又可以分为两大类情况:2.1:将选取[1,1,1,2]的第一个元素1 2.2:将不选取[1,1,1,2]的第一个元素1,即从剩下的[1,1,2]中选取。如果取出cand[1],则跳转到结点3,此时used[1]被赋值为true,满足:candidate[1]==candidate[0]且used[0]==false,所以结点3会被删除,为什么结点3会被删除呢?本题需要的去重操作为树层去重。
2025-01-08 12:26:16
301
原创 KMP算法详细讲解(含代码和样例分析)
本文参考b站(可以直接点击右侧链接跳转至b站视频页)和acwing831对kmp算法的基本思想以及如何构造next数组进行讲解
2024-12-20 21:41:47
1775
原创 【b站:二分查找为什么总是写错?】二分问题红蓝区域划分方法总结
确定IsBLUE函数要考虑具体的情况,毕竟二分的思想可以用于很多情形不仅仅是在数组中查询一个满足条件的元素,比如acwing730,IsBLUE函数的定义就比较复杂,不是一两句可以描述的。尽管如此,有几种常见的模型,如下图所示,可以解决大部分的问题,也可以将一个问题转换为这几种模型去使用:如何快速记住这四种模型呢,可以简单地分为“找第一个”和“找第二个”两种情况,对于“找第一个”的问题,isblue的条件与之互补,返回r,而对于“找最后一个”的问题,isblue的条件与之相同,返回l。
2024-12-16 18:21:05
1076
原创 2023NJU-ICS PA1.2表达式求值 思路详解 心得体会
PA1.2的细节非常非常多,导致这几天花了大量的时间去调试bug,4.3晚上终于过了最后一关“如何测试你的代码”(花了两整天时间才调成功)。虽然耗时巨大,但确实学到了不少东西、训练了能力,于是抽几天时间来此记录一下遇到的问题以及解决和一些心得体会。
2024-04-08 12:37:38
2983
原创 NJU PA1 “优美地退出” 问题解决
本文通过gdb调试的方法来弄懂nemu大概执行流程,由此找到报错的源头并加以解决,其实很多内容是不必要的,但为了能够更清晰地理解nemu框架代码,导致本文看起来比较繁琐。
2024-03-30 13:24:42
2082
3
原创 C++ 考前难点总结
后天考c++,但这几天得甲流了,特别难受!复习c++的时候复习着忘着,所以用csdn记录一下不熟悉的知识点,等后天考前再看一遍!
2023-12-27 20:27:16
1367
8
原创 英语四六级作文常用高级表达
今天下午三点去考六级,还有点时间,总结一下作文高级句型和图表类作文常用句型,发上来记录一下。目录前言高级词汇必用高级短语和语法和其它书信体和图表类常用句型。
2023-12-16 13:19:57
4259
9
原创 软件工程--面向对象分析用通俗语言20小时爆肝总结!(包含用例图、活动图、类图、时序图......)
本文用通俗语言详细讲解软件工程面向对象分析建模的知识
2023-11-27 16:43:18
4350
2
原创 软件工程--软件建模--结构化方法通俗语言总结(暴肝超详解)(包含数据流图、数据字典、ER图、结构化设计和优化......)
本文用通俗语言讲解软件工程--结构化方法,纯干货
2023-11-22 09:24:47
6518
5
原创 一分钟学会使用二分各类模板
数的范围”:比如一段序列3 4 4 5 5 5 6。右边界即找:小于等于5的最后一个下标。左边界即找:大于等于5的第一个下标。4.找到最后一个小于等于x的元素。2.找到第一个大于等于x的元素。3.找到最后一个小于x的元素。1.找到第一个大于x的元素。5的下标范围为[3,5]
2023-11-09 23:19:26
210
2
原创 Intel oneAPI笔记(4)--jupyter官方文档(Unified Shared Memory)学习笔记
USM (Unified Shared Memory)是SYCL中基于指针的内存管理。对于使用malloc或new来分配数据的C和C++程序员来说应该很熟悉。
2023-11-07 22:03:58
1002
10
原创 Intel oneAPI笔记(3)--jupyter官方文档(SYCL Program Structure)学习笔记
本文是对jupyterlab中oneAPI_Essentials/02_SYCL_Program_Structure文档的学习记录,包含对Device Selector、Data Parallel Kernel、Host Accessor、Buffer Destruction、的介绍,最后还有一个小关于向量(Vector)加法的实例。
2023-11-06 11:49:20
1242
3
原创 Intel oneAPI笔记(2)--jupyter官方文档(oneAPI_Intro)学习笔记
本文是对jupyterlab中oneAPI_Essentials/01_oneAPI_Intro文档的学习记录
2023-11-05 17:50:36
836
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅