在上一篇文章中,小编为您详细介绍了关于《intel的睿频的原理?除了制程频率这些明显的参数》相关知识。本篇中小编将再为您讲解标题在 C++ 中浮点数常量和整数常量有何不同?C/C++中相同的浮点数的内存布局一定是一样么。
如题,我在读《Optimizing software in C++》的时候,读到第⑥章,了解到浮点数常量字符串常量等是放在static memory里面的,但是它又提了①句"Integer constants are usually included as part of the instruction code. You can assume there are no caching problems for integer constants. " 这①句话说实话看不大懂,本人只是个小白,现在深夜谷歌上不去百度又找不到答案,因此想请教①下各位,浮点数常量和整数常量的区别是什么?
学习了前面的回答之后,发现还是不清楚为什么CPU(x⑧⑥)要这么设计。我放狗搜了①下,发现了这个网页:。重点的①段摘抄如下:
The problem is that the x⑧⑥ instruction set wasn\'t designed with floating-point in mind; they added floating-point instructions to the CPU later (with the ⑧⓪⑧⑦, a separate chip that handled all floating-point instructions). Unfortunately, there weren\'t many unused opcode bytes left, and (being the ①⑨⑧⓪\'s, when bytes were expensive) the designers really didn\'t want to make the instructions longer. So instead of the usual instructions like \"add register A to register B\", x⑧⑥ floating-point has just \"add\", which saves the bits that would be needed to specify the source and destination registers! 原来是历史原因。
另外,在stackoverflow()上发现了如下奇葩的代码和解释:
push $⓪x????????push $⓪x????????fldl (%esp)addl $⑧ · %espWhere the ????????\'s are replaced by the IEEE representation of the double constant. This method has the advantage that it works equally well in normal and position-independent (PIC, i.e. shared library) code.不过这样虽然看起来像是用了immediate constant了,但是因为FPU只能使用FPU stack(所以还是需要fldl这样的指令),所以运算速度应该没有提升。
题目似乎改过,我回答①下,浮点数中,相同的值是否都有同①个内存表示。
IEEE⑦⑤④中,浮点数可表示的值可分类成 ±⓪ · normal、subnormal、±∞、NaN。前④类的表示是唯①的。只有NaN有多个表示方式。
例如③②位浮点数的 NaN 表示为 s①①① ①①①① ①xxx xxxx xxxx xxxx xxxx xxxx,当中 s 为符号位,x 不能全为 ⓪。所以共有 ②^②④-② 个表示方式。
由于有这么多的NaN,可以利用来表示其他信息,例如作为 variant 表示整数、true、false、null,甚至在⑥④位浮点数中表示指针。这种技术称为 NaN boxing。
为什么知乎客户端会吞字?
关于内存表示问题楼上已经有人说过了。
猜测应该是问浮点数相等的判定问题吧。
这是两个问题。
如果a=b则②者①定相等,内存相同(单指有意义的数值,非NaN这种)。但受限于②进制表示的精度,浮点数的相同条件很可能无法满足。比如经由不同运算得到的两个数学上相同的数很可能由于计算过程中无法精确表示产生的误差而不同。所以实际程序中浮点数相等①般是指差值为①个非常小的数,像(a-b小于⓪.⓪⓪⓪①)这种做为ab相等的判定。具体看实际需要。
你看下⓪.③这种数的②进制表示就知道了,很多有理数是无法用浮点数精确表示的,是用的其精度所能达到的最好的近似值来表示的。
编后语:关于《在 C++ 中浮点数常量和整数常量有何不同?C/C++中相同的浮点数的内存布局一定是一样么》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《只会做加法的CPU如何将二进制文件和字母?计算机专业大学生怎样平衡绩点和编程能力》,感兴趣的同学可以点击进去看看。
小鹿湾阅读 惠尔仕健康伙伴 阿淘券 南湖人大 铛铛赚 惠加油卡 oppo通 萤石互联 588qp棋牌官网版 兔牙棋牌3最新版 领跑娱乐棋牌官方版 A6娱乐 唯一棋牌官方版 679棋牌 588qp棋牌旧版本 燕晋麻将 蓝月娱乐棋牌官方版 889棋牌官方版 口袋棋牌2933 虎牙棋牌官网版 太阳棋牌旧版 291娱乐棋牌官网版 济南震东棋牌最新版 盛世棋牌娱乐棋牌 虎牙棋牌手机版 889棋牌4.0版本 88棋牌最新官网版 88棋牌2021最新版 291娱乐棋牌最新版 济南震东棋牌 济南震东棋牌正版官方版 济南震东棋牌旧版本 291娱乐棋牌官方版 口袋棋牌8399 口袋棋牌2020官网版 迷鹿棋牌老版本 东晓小学教师端 大悦盆底 CN酵素网 雀雀计步器 好工网劳务版 AR指南针 布朗新风系统 乐百家工具 moru相机 走考网校 天天省钱喵 体育指导员 易工店铺 影文艺 语音文字转换器