csappp_lab1 题解 1.bitxor 题目描述: bitXor - x^y using only ~ and & Example: bitXor(4, 5) = 1 Legal ops: ~ & Max ops: 14 Rating: 1 解题思路: 利用~和&生成^,简单拆分异或即可,并运用德尔摩根定律 代码: int bitXor(int x, int y) { return ~(~(x & ~y) & ~(~x & y)); } 2.tmin 题目描述…
csappp_lab1 题解 1.bitxor 题目描述: bitXor - x^y using only ~ and & Example: bitXor(4, 5) = 1 Legal ops: ~ & Max ops: 14 Rating: 1 解题思路: 利用~和&生成^,简单拆分异或即可,并运用德尔摩根定律 代码: int bitXor(int x, int y) { return ~(~(x & ~y) & ~(~x & y)); } 2.tmin 题目描述…
ieee浮点表示 ieee浮点表示用下式表示一个数 V=(-1)^S * M * 2^E + 符号 S表示这个数是正数(0)还是负数(1),由单独符号位s直接编码 + 尾数 M是一个二进制小数,由n位小数字段frac编码,同时还依赖阶码字段判断是否为0 + 阶码 E的作用是对浮点数进行加权,权重是2的E次幂,由k位的阶码字段exp编码 在单精度浮点数格式中,s,exp和frac字段分别为1位,k=8位和n=23位,得到一个32位的表示,而双精度浮点数中,在c语言中共64位,s,exp和frac字段分别为1位,k=1…
2021/6/8 First day of GSOC This is my first time to write a blog in English, hopefully there won't be many mistakes which will confuse others. Because of the school stuffs, i didn't managed to give a lot of time on ScummVM in past few weeks. But since GSOC is …
右值引用 还是谈一谈我对右值引用的理解 有关右值引用的讲解网上有很多,这里就不在一一罗列了 右值引用,毫无疑问是用来解决冗余拷贝的问题的。 比如在拷贝构造函数里实现了深拷贝,那么在某些情况下我们就有可能重复的进行大量资源的拷贝,造成资源的浪费 C++的编译器有对这方面的优化,叫做RVO(return value optimization) 我们在函数返回的时候,不进行一次次的拷贝构造,而是直接将对象构造在他应该放的地方,从而省略了中途冗余的拷贝 但是这毕竟只是编译器做的优化,不能完全帮助我们优化性能,所以有的时候这…
隐含的资源泄露 原文章是《Effective C++》条款17 以独立语句将newed对象嵌入智能指针 考虑这样一个情况 void processWidget(shared_ptr<Widget>, int); int priority(); processWidget需要一个智能指针和一个代表优先级的int,其中优先级可以通过priority获得 那么可能的一种写法就是 processWidget(shared_ptr<Widget>(new Widget), priority()); 那…
RAII 拓展 今天的内容主要取自《Effective C++》 之前有一节我有讲到有关RAII的用法 今天重新回去读了一下effective c++才发现之前自己有一部分理解是错的 这里进行一个纠正,并进行一点对RAII的补充 以对象管理资源的观念被称为RAII,因为我们总是在获得一笔资源后于同一个语句内以他初始化某个资源管理对象 所以对RAII的理解指的是资源管理对象的初始化是在资源获取的同时进行的 所以也可以叫这种资源管理对象RAII对象 智能指针就是一种RAII对象,C++中没有为动态分配数组设计的类似智能…
ARTS打卡 第四周 这周周赛发挥不错,虽然早上状态并不是很好,但是这次的题目出乎意料的合我的口味,拿到了第18名 对于算法来说,就推荐一下这次周赛的第三题吧 题目 解法就是使用两个堆,一个用来储存当前空闲的服务器,权重最小的优先,还有一个用来储存当前正在运行的服务器,结束时间早的优先 然后我们就可以一步一步的模拟,遇到一个任务就从空闲服务器中弹出一个服务器分配,并将其加入到运行服务器中 然后按顺序模拟即可 技术文章的话,我的点评在我这一周的Daily中,大家可以去看 希望分享的文章是这个文章 还有这个The Bi…
异常安全性 老样子,先放出第一手信息源 CSDN wiki 今天我们只讨论简单的异常安全 简单点说,异常安全就是保证在执行我们的函数的时候,不会出现资源的破坏,或者泄露的情况 之前讲到的RAII其实就是一种处理情况,即利用了自动析构的特性帮助我们管理资源 这里再来讲一种情况 class A { A &operator= (const A &others) { if (this != &others) { delete ptr; ptr = new T(*others.ptr); } retu…
operator->() 说实话这一个小玩意单独拿出来做一章有点小题大做,所以这篇文章相对会比较短 还是,希望给大家第一手的信息,而不是我嚼过的 stackoverflow tutorialspoint cppreference 在搜集资料的过程中,我还发现了->* 和 .* 这样的运算符,他们主要就是指向类成员的指针,无论是成员函数还是成员变量 可以简单的理解为,从右向左看,先解引用,然后在访问成员 具体可以看这里 stackoverflow 现在回到->这里,重载的operator->()必须是非静…
杂谈-学汇编语言的必要性? 先说点题外话在前头,我发现自己目前一个很致命的缺点,就是我不能很好的将自己思考的内容完全的讲述出来 这不像是讲知识点,或者算法,技巧什么的,那些东西都是有迹可循的,我只需要跟着自己思考问题的思路走,就可以把他们讲出来 虽然表达的有时候不是很清晰,但是至少他是一个整体的 但是对于某些事情的思考,完完全全是随机的,不能控制的,可能有的时候我就会冒出一个观点,一个想法,但是仔细推敲却发现自己无法还原这些东西,就像是做了梦一样 包括今天要写的这个文章,也是自己突然冒出来的一点想法 我知道自己目前…