随笔分类 -  Linux C

摘要:在学习《深入理解计算机系统》的浮点数存储里,我想到一个问题,单精度浮点数中,非规格浮点数最大数是几? 符号位:0 指数域:00000000 小数域:11111111111111111111111 指数域全0,小数域全1,符号位0,这个数应该是非规格数中最大的一个了,那么这个数存在吗?计算机是这样存储 阅读全文
posted @ 2019-03-07 12:53 立体风 阅读(1429) 评论(0) 推荐(0)
摘要:浮点数公式:V=(-1)s M2E 分2种情况,非规格(-1<V<1这个区间时)和规格(V<=-1或V>=1的区间时)。 1、当表示非规格化小数时,阶码全为0。 2、当为规格化小数时,根据阶码e的计算公式: 举例:(5.25)10 =(101.01)2 =1.0101 * 22 根据规格数的定义:M 阅读全文
posted @ 2019-03-07 09:10 立体风 阅读(1750) 评论(0) 推荐(0)
摘要:网址:www.gmplib.org 我下载的是 6.1.2版本:https://gmplib.org/download/gmp/gmp-6.1.2.tar.bz2 执行操作如下: 用c语言编一个例子: 用c++要简单很多: 注意,编译时要链接gmp库: 阅读全文
posted @ 2019-03-06 21:11 立体风 阅读(2164) 评论(1) 推荐(0)
摘要:float类型占四个字节,每个字节占8位,总共32位,其内存结构如下图: 31位为符号位:0表示正数,1表示负数31~23位:共8位表示指数位,内存存储数据从0~2^8-1=255,由于指数可以是正也可以是负,所以指数位采用移位存储表示数据,8位有符号有可表示数据从-128~127,所以指数位表示的 阅读全文
posted @ 2019-03-04 06:01 立体风 阅读(1250) 评论(0) 推荐(0)
摘要:在c语言中,根据类型的不同,求绝对值函数也不同。 求int类型用abs,求浮点类型用fabs。 而且这两个函数的所在头文件也不同: 但是,该问题在c++中得到妥善的解决:因为c++的函数可根据参数类型不同,进行重载(就是选择不同的同名函数),所以,c++中求绝对值只有abs即可覆盖int和doubl 阅读全文
posted @ 2019-03-03 13:39 立体风 阅读(4918) 评论(0) 推荐(0)
摘要:在c/c++中,因为浮点数在内存中的表示是不精确的,会有很微小的误差,所以判断是否为0,就看它的绝对值是不是<=eps。 eps可以看成是epsilon的缩写,可以用来表示一个无穷小的量,通常取eps的值为:1e-10~1e-8 之间。如: 原理: IEEE754标准中,单精度浮点数(4byte)表 阅读全文
posted @ 2019-03-03 13:34 立体风 阅读(6706) 评论(0) 推荐(0)
摘要:浮点数存储标准为:IEEE754。 一、定义:什么是IEEE754 浮点数在C/C++中对应float和double类型,我们有必要知道浮点数在计算机中实际存储的内容。IEEE754标准中规定float单精度浮点数在机器中表示用 1 位表示数字的符号,用 8 位来表示指数,用23 位来表示尾数,即小 阅读全文
posted @ 2019-03-02 20:03 立体风 阅读(2097) 评论(0) 推荐(0)
摘要:人们最早就在Quake3源代码中发现了类似如下的C代码,它可以快速的求1/sqrt(x),在3D图形向量计算方面应用很广。 人们在QuakeIII源码发现了这个函数,于是很自然的认为这是卡马克(John Carmack)的杰作,其中0x5f3759df这个数被称为卡马克密码,我们在下面称这个数为ma 阅读全文
posted @ 2019-02-26 13:26 立体风 阅读(446) 评论(0) 推荐(0)
摘要:今天看书《C++高级语言程序设计》(徐惠民)的书中关于指针的指针作为函数的参数一节,对指针有了更深层次的感悟,记录。 要点1:解引用符*的作用,把它放在一个地址的左边,可以取得这个地址内存放的值。 要点2:指针就是存放地址的变量,可以简单的理解为:指针就是一个地址。 要点3: int a=10; i 阅读全文
posted @ 2018-05-01 15:02 立体风 阅读(1410) 评论(0) 推荐(0)
摘要:man-pages项目是由linux kernel维护的一个文档项目,但是,该项目中只是包含了部分常用文档,还有大量gnu常用系统工具的manpanges没有包含,但一些在线网站提供一个详细版本的man-pages页面。 1、在man7.org维护了一份比较全的在线文档,不过该网站好像没有下载安装的 阅读全文
posted @ 2018-03-19 14:53 立体风 阅读(729) 评论(0) 推荐(0)
摘要:不知道有人注意没有,virtual的英语含义是:实际的,事实上,实质上。但是在计算机英语内却表示:虚拟的意思。比如:virtual memery 虚拟内存,virtual reality 虚拟现实。 哇,为啥一个单词包含两种相反的含义?剑桥英语词典对virtual的解释是:almost a part 阅读全文
posted @ 2018-03-14 11:26 立体风 阅读(2821) 评论(0) 推荐(0)
摘要:最近重读c语法,有所感悟,记录。 有时候感悟,其实就是猜,假想,作者创建语言的想法,通俗的讲就是丹尼斯灵魂附体了,这个时候任何c语言难点对于你来说,就像吃饭喝水一样简单了,同时还能发现它优美动人之处。 typedef的作用就是给类型创建一个别名。但类型分2种,1种是基础类型,1种是自定义类型。 1、 阅读全文
posted @ 2018-03-07 18:45 立体风 阅读(187) 评论(0) 推荐(0)
摘要:1、man手册可以输出ascii码表 man ascii 2、man手册还可以输出运算符的优先级 man operator 阅读全文
posted @ 2018-02-20 21:54 立体风 阅读(408) 评论(0) 推荐(0)
摘要:1、执着cscope.files文件,对源码目前全文件搜索 find `pwd` -type f > cscope.files `pwd`生成当前目录的绝对路径,这样在cs命令里面就可以不用写那个pre-path了 2、对一些返回数量过多的函数,可以搜索它的隐藏函数 比如:weak_alias这个宏 阅读全文
posted @ 2018-02-16 16:44 立体风 阅读(231) 评论(0) 推荐(0)
摘要:最近下载了kernel的最新源码4.15版,但下载后的linux内核不仅包含了x86架构的函数还包含了如:arm、powerPC等等其他架构的函数,如果直接生成tags文件,将来查找时,多种架构的同名函数会混淆在一起,很不方便。好在,贴心的linux内核组给准备了tags.sh文件,可以自动生成相应 阅读全文
posted @ 2018-02-14 18:10 立体风 阅读(790) 评论(0) 推荐(0)
摘要:Cscope具有纯正的Unix血统,它最早是由贝尔实验室为PDP-11计算机开发的,后来成为商用的AT&T Unix发行版的组成部分。直到2000年4月,这个工具才由SCO公司以BSD license开源发行。 Cscope的主页在http://cscope.sourceforge.net/,如果你 阅读全文
posted @ 2018-02-14 15:32 立体风 阅读(10650) 评论(0) 推荐(0)
摘要:为了硬件能够快速访问,数据在内存中要对齐(参考集装箱)。这里主要说一下结构体的对齐。 1、结构体内元素的大小,又下一个字节决定。 2、系统默认4个字节对齐方式。 输出结果: 阅读全文
posted @ 2018-01-21 11:29 立体风 阅读(208) 评论(0) 推荐(0)
摘要:有一次我想查看time_t类型的定义,一开始想直接在/usr/include/time.h中查找,结果里面没有,而是转到另外一个:__time_t(2个下划线), 结果又转到:__STD_TYPE __TIME_T_TYPE __time_t; 继续找:#define __TIME_T_TYPE _ 阅读全文
posted @ 2017-12-10 21:45 立体风 阅读(1490) 评论(1) 推荐(2)
摘要:1、ctags -R 有个问题,成员变量没有包含在里面。所以自动完成对象的成员时没有提示。解决办法:$ctags -R --fields=+iaS --extra=+q *–fields=[+|-]flags–fields指定tags的可用扩展域(extension fields),以包含到tags 阅读全文
posted @ 2017-11-21 14:41 立体风 阅读(1279) 评论(0) 推荐(0)
摘要:1、安装: 2、生成tags文件: 3、在vim中设置tags的绝对目录,这样就可以在任何子目录使用了。 4、使用:将光标移动到名称上按 ctrl+] 进入定义该名称的地方。跳回使用: ctrl+t 5、查看当前文件路径及名称:在vim中按 :f 或者 ctrl+g 阅读全文
posted @ 2017-11-21 12:24 立体风 阅读(273) 评论(0) 推荐(0)