浮点运算 当我们用不同的电脑计算圆周率时,会发现一台电脑的计算较另一台来讲结果更加精确。徐如倜或者我们在进行枪战游戏的时候,当一粒子弹击中墙壁时,墙上剥落下一块墙皮,同样的场面在一台电脑上的表现可能会非常的呆板、做作;而在另外一台电脑上就会非常生动形象,甚至与我们在现实中看到的所差无几。 这都是浮点运算能力的差异导致的。 浮点运算就是实数运算,因为计算机只能存储整数,所以实数都是约数,这样浮点运算是很慢的而且会有误差
现在大多数机器都是32位的,也就是说32为都用来表示整数的话,那么对于无符号整数就是0 到 2^32-1,对于有符号的话就是-2^31 到 2^31-1。如果是实数的话,就不是这样了,机器有两种办法表示实数,一种是定点,就是小数点位置是固定的,一种是浮点,就是小数点位置不固定,计算方法也比较麻烦,通常会比整数运算代价大很多 FPU-Floating Point Unit,浮点运算部件
BCD-Binary Coded Decimal 压缩的二十进制数,是用4个位来表示数字0~9,一个byte表示两个十进制数,比如01111001表示89
科学计数法:这是科学的~~~~具体含义查查初中还是小学的数学课本 D:)
浮点运算使用三种不同的数据:
1)整数(Integer),又分为字,短整数(Short Integer)和长整数(Long Integer)
2)实数(Real)分单精度(Single Real)和双精度(Double Real)
3)压缩的二十进制数(BCD)
下面是其位数(bits)和能表示的大致范围和
Type Length Range
-----------------------------------------------
Word Integer 16 bit -32768 to 32768
Short Integer 32 bit -2.14e9 to 2.14e9
Long Integer 64 bit -9.22e18 to 9.22e18
Single Real 32 bit 1.18e-38 to 3.40e38
Double Real 64 bit 2.23e-308 to 1.79e308
extended Real 80 bit 3.37e-1932 to 1.18e4932
Packed BCD 80 bit -1e18 to 1e18
双精度数和扩展精度数表示范围对一般应用来说已经足够大了!
1)整数,以补码形式存储,正数的补码是其本身,负数补码是其绝对值的各位变反后加1,下面是实际存储的例子:
0024 var1 dw 24
FFFE var2 dw -2
000004D2 var3 dd 1234
FFFFFF85 var4 dd -123
0000000000002694var5 dq 9876
2)BCD数
在FPU中用80位表示正好是浮点堆寄存器的宽度,在其格式如下存储:
Bit
79___72_71________________________________________0
符号 ---18个二十进制数--------
看下面的例子:
00000000000000012345 var1 dt 12345
80000000000000000100 var2 dt -100
3)浮点数,这个复杂点,有三种格式
单精度:_31_30________23_22___________0
符号 指数 有效数
双精度:_63_62__________52_51__________________0
符号 指数 有效数
扩展精度数:
_79_78____________64_63___________________0
符号 指数 有效数
例子:
C377999A var1 dd -247.6
40000000 var2 dd 2.0
486F4200 var3 real4 2.45e+5
4059100000000000 var4 dq 100.25
3F543BF727136A40 var5 real8 0.00123
C377999A var1 dd -247.6
40000000 var2 dd 2.0
486F4200 var3 real4 2.45e+5
4059100000000000 var4 dq 100.25
3F543BF727136A40 var5 real8 0.001235
400487F34D6A161E4F76 var6 real10
另外,浮点运算的常见形式是开方运算。
xss 10g高低搭配显存,xsx 16g高低搭配显存。
显存速度xss比xsx低很多,游戏机没有内存,只有显存xbox series s的显卡相当于AMD的5500XT,如果是N卡的,大概相当于1650SUPER,不过不同架构的性能不能直接暴力的对比,但是最起码可以让玩家有一定的认识。另外本身主机的优化肯定更加好,所以在同个配置下,XSS的画面还是非常不错的。
处理器是基于AMD Zen2架构的定制版CPU,频率3.8GHz,显卡也是基于AMD未发布的RDNA2架构的定制核心,频率高达1.825GHz,具备52组CU单元,或者说3328个流处理器,浮点性能为12 TFLOP,比RTX 2080还强一点,另外还搭配16GB GDDR6,
不会吧,你仿真试试,控制个小车完全没问题,现在有的芯片支持硬件浮点运算
微软的次世代主机Xbox Series X已经于今日正式发售,而索尼的PlayStation 5也将在两天后,11月12日发售,新一轮主机大战的硝烟已经逐渐弥漫。
和7年前PS4和Xbox One发售时不同,如今两家都从单一机型的销售策略,转变向分别推出不同硬件配置的机型来满足不同消费者的需求。面对499、399、299美元,光驱版、数字版等一系列不同的主机型号,相信不少新玩家已经有些犯难了。
加上索尼微软各自在游戏阵容、平台服务、旧平台兼容、运营政策上又有不少区别,因此本世代两代主机的购买也就多了几分选择困难。所以这次我们将从硬件、游戏阵容、会员服务、以及购买推荐这几个方面进行分析。相信不管新老玩家看完都能有更进一步的认识。
谁是地表最强次世代主机?
选硬件当然第一时间看性能。尽管在硬件配置阶段,微软与索尼两家明显在着力点上存在着不同,但从总体性能上来看,目前微软的旗舰机型XSX更胜PS5一筹,是当之无愧的最强性能次世代主机。
CPU方面,虽然双方均采用了8核心AMD Zen 2 CPU架构,纸面性能与去年上市的锐龙3700x相仿,但XSX最高3.8GHz的运算频率略优于PS5的3.5GHz,差距不算太大。
而在GPU方面,Xbox Series是目前唯一支持RDNA 2架构完整特性的次世代主机
尽管GPU的提供商AMD此前已经承认两台同样都采用了RDNA 2.0架构GPU,但在定制层面存在着比较大的差距。10月底AMD公开RDNA 2架构显卡产品时,微软也随即宣布Xbox Series X/S是唯一完整支持RDNA 2特性的主机,包括DXR光线追踪、网格着色器、取样反馈和可变速率着色。
换言之,索尼PS5采用的GPU并不能完整支持以上这些特性,这也是此前索尼一直宣称其GPU为“基于RDNA 2架构”的原因。目前可以肯定的是,PS5将不支持网格着色器,取而代之的是AMD在上一代RDNA架构中公布的Primitive Shader定制化后的“几何引擎”(Geometry Engine)。
当然,如果你对以上这些特性不甚了解,简单的纸面示例还是能说明基本问题的——XSX拥有每秒高达12TFlops的单精度浮点运算力与52个控制单元,PS5则只有10.3TFlops与36个控制单元。
分辨率:8K时代真的来临了吗?
此外,两家均宣称支持4K甚至8K分辨率,以及最高120帧的画面,但实机效果因游戏而异,目前已经发售的XSX经过测试,向下兼容的《只狼:影逝二度》、《巫师3》等本世代游戏都可以在4K分辨率下达到60帧左右的流畅水平,当然具体的测试还得到拿到机器之后再给出。而PS5的8K分辨率支持则需要之后通过系统更新获取。
由于光线追踪需要消耗大量的机能,大多数游戏在次世代主机上为了兼容分辨率和光追效果,都会选择牺牲帧数。以《鬼泣5 特别版》为例,在开启光线追踪的情况下,两台主机都只能在4K分辨率下维持30帧,或是在1080P分辨率下保持60帧;而如果关闭光追,则可以在4K分辨率下跑到60帧或120帧。
由此我们可以看出,目前的次世代主机还不能够自如地将光线追踪、4K或8K高分辨率、高帧数三个诉求全部兼容,受制于成本和售价,玩家还是要在其中做取舍——毕竟最贵的XSX和PS5,官方售价也只有499美元,和高性能PC相比还是便宜不少的。
存储:索尼的SSD真的是黑科技吗?
数据存储方面,此次两家皆升级至16GB GDDR6高速内存。不过XSX的内存有着320-bit 位宽与最高560GB/s的非对称带宽。PS5的内存则采用256-bit位宽与448GB/s的带宽。
面对硬盘这个读写速度的短板,次世代两家同时抛弃了慢速的机械硬盘,全面改用吞吐速度更快的固态硬盘。而这部分,两家又有着较大的差距,索尼自宣发时期就着重强调PS5的固态硬盘性能。
XSX内置1TB容量的定制SSD,可用容量为802GB,非压缩传输速率达到2.4GB/s。配合微软的黑科技Quick Resume功能,允许玩家不中断当前游戏并保留当前游戏状态的前提下,快速打开其他游戏游玩,并可以在数款游戏之间快速切换。经过测试,XSX可以轻松地在10秒内从《无主之地3》切换到《我的世界:地下城》。当然,这个数据受不同游戏影响也会产生浮动,不过仍然是一个非常强大的功能。
需要注意的是,XSX并没有提供比较大众的扩容接口,玩家可以购买微软官方的1TB扩容卡来增加主机的容量,不过这款微软与希捷合作定制的1TB扩容卡售价高达220美元,价格不菲。
PS5定制SSD有着极其惊人的5.5GB/s非压缩速率,是XSX的两倍以上,大大加速了游戏载入读取的时间。相比起PS4上《黑魂3》死一次就要等个10几20秒,未来玩家在游玩《恶魔之魂 重制版》时可以在死亡后立刻重来,真是可喜可贺(?)。
不过PS5硬盘的高速率也是有代价的,其容量仅有825GB,可用容量仅665GB。除去系统占用,预期实机可用容量还会更少。同时这块定制SSD是焊接在主板上,难以拆换,这对于机器的良品率与售后维修提出了更高的要求。不过索尼也单独提供了PCIe 4.0规格的M.2 接口,方便玩家自行购置SSD扩充容量,不过必须满足PS5的最低性能水平。
此前Gamespot针对两台次世代主机内置SSD的载入速度进行了测试,有些诧异的是尽管PS5有大吞吐量SSD的加持,加载速度上整体还是稍逊于XSX。由于测试的是本世代游戏而非次世代游戏,此前索尼也曾表示第一方的次世代游戏将针对这块SSD进行专门优化,期待后续的表现。
这里还是列出Gamespot经过测试的本世代游戏载入速度:
《荒野大镖客2》
PS5 1:04
XSX 1:02
《最终幻想15》
PS5 1:10
XSX 0:43
《命运2》
PS5 1:37
XSX 1:12
《怪物猎人世界》
PS5 0:51
XSX 0:29
《蝙蝠侠:阿卡姆骑士》
PS5 1:07:27
XSX 58:48
相比本世代主机,双方在载入速度上的提升都已经非常明显了,无论选择哪一台主机,玩家的体验都将得到大幅度的改善,再也不需要长时间坐在显示器前等待读盘,也不需要那些连通关卡场景的长隧道来争取素材加载的时间了。
散热:截然不同的解决方案
强悍的机能势必伴随着散热的问题,XSX这边采用结构紧凑的垂直风道散热设计,外观小巧的同时可以任意竖放或侧放。相比之下,PS5安装了导热性优异的液态金属,但遇到品控不好的机器则有漏液报废的可能。此外,PS5的热管散热片占用了大量空间,导致整机体积达到PS4 pro 的两倍,XSX的1.5倍之大。尽管体积庞大,造型一言难尽,但PS5的侧板可自由拆卸,未来想必会有一堆魔改自制外壳,让主机看起来养眼一些。而且PS5还有个非常有趣的设计,那就是专门提供了一个集尘口方便玩家用吸尘器进行日常清灰,可以降低主机长期使用后造成的灰尘累积。
我相信不少朋友都体验过自己的PS4或是PS4 PRO在运行本世代末游戏时那恐怖的风扇噪音,有一点可以肯定的是,两台次世代主机都会更加安静。根据数毛社Digital Foundry的测试,XSX运行时相当安静,甚至不需要使用噪音表单独测试,而散热温度方面,运行《战争机器5》时机器表面温度为48-49度,表现良好。
版本:按需选择
值得一提的是,与XSX同步发售的,还有微软的轻量级次世代主机:Xbox series S,相比起XSX,XSS最大的特点就是体积小,无光驱,板载硬盘缩减至512G,显卡浮点算力为XSX的1/3,主打2k分辨率和高帧数,更适合不追求高分辨率的玩家购买。根据游戏的优化和规模不同,XSS也能够在一些游戏中开启光线追踪,比如XSS运行《看门狗:军团》时就是支持光追的,而运行《鬼泣5 特别版》时则不行。这方面还是以具体游戏为准。
而索尼的PS5也分为带蓝光光驱的标准版和无光驱的数字版,不过不像XSX和XSS存在性能上的差异,PS5的数字版和标准版主要在于光驱的有无,以及外观、重量上的不同。当然,如果选购数字版,那么今后就只能选择数字版游戏,也就无缘国内比较流行的实体盘二手回收了,还请留意。
游戏阵容:独占策略与订阅制的两极
说完硬件,再来看主机最核心的驱动力,游戏阵容。
目前索尼与微软都已经公布了各自的首发游戏,同时也阐明了玩家最关心的上世代游戏过度的问题
独占
在主打的独占游戏方面。索尼以魂系列玩家魂牵梦绕的《恶魔之魂 重制版》打头阵,再加上《漫威蜘蛛侠:迈尔斯·莫拉莱斯》、《麻布仔大冒险》、《太空人的娱乐室(Astro's Playroom)》这几款游戏作为PS5年内首发独占游戏,原定首发独占的《毁灭全明星》则延期至2021年。
这之外还有《Returnal》、《GT赛车7》、《战神:诸神黄昏》、《地平线2:西部禁域》这几款独占游戏仍在开发中,暂时未公布发售日。同时贝塞斯达旗下的《死亡循环》、《幽灵线:东京》发售后也将在PS5上限时独占一段时间。
相较于索尼坚定的独占打法,微软近几年主推“play anywhere”的则是多平台互通策略。Xbox老大Phil Spencer曾强调过,微软的目标是,玩家买的游戏不只能在Xbox Series X、Windows 10 PC上玩,甚至随着xCloud的兴起,还可以延伸到移动设备上。
这也就意味着Xbox的独占游戏同时也会登录PC,包括为新主机保驾护航的《光环:无限》(虽然延期了),《脑航员2》、《神鬼寓言》新作、《极限竞速》新作、《腐烂国度3》、黑曜石新作《Avowed》和《暮色降临(As Dusk Falls)》等等游戏,都会一同登陆PC。
不过由于今年9月微软收购了贝塞斯达的母公司ZeniMax Media及其旗下工作室,未来如《上古卷轴》、《辐射》、《毁灭战士》等贝塞斯达和旗下工作室制作的游戏很有可能在Xbox和Windows PC平台独占或是限时独占,对于索尼的独占策略来说也是很大的冲击。具体还要看微软的策略。
向下兼容
除了独占游戏外,两家主机均兼容了旧世代游戏。微软的XSX将会延续之前XBOX ONE向下兼容的政策,即兼容XBOX 360、XBOX初代游戏的同时提供更强的画质升级。这等于玩家只需购买一台主机就能坐拥四代同堂的海量游戏阵容。对于经常想要怀旧的玩家而言,XSX这一卖点非常值得去投入。
PS5则兼容99%的PS4游戏,并且同样基于更高的硬件配置提供更高的画质体验。
订阅服务:微软的XGP更香
最后,在订阅制服务这块,微软与索尼有着决定性的差距。
微软的Xbox Game Pass订阅服务价格实惠,新玩家仅需10港币(1美元)就能尝鲜一个月。正常购买一年的费用大约等于一到两款3A的价格,即可以享受库内上百款新旧精选游戏。不仅每月会有新游戏加入XGP,部分微软独占游戏与第三方游戏首发即纳入其中。此外,拥有XGP还将获得买游戏享8折,DLC9折的优惠。
Xgp已经包含了EA play,容纳更多游戏
不仅如此,微软最近大手笔收购贝塞斯达后,确认会将贝塞斯达旗下游戏加入到XGP。未来像《上古卷轴6》、《星空》、《辐射》新作这类B社重磅作品,都可以在XGP订阅服务中以低廉的价格享受到,而无需花费六七十美元去单独购买。
索尼这边则升级了一贯以来的PlayStation Plus会员,提供名为PlayStation Plus Collection免费游戏服务。只要付费成为 PS Plus 会员,不需要另外再付出额外费用,就可以在PS5主机上免费畅玩其中所包含的经典PS4游戏。
目前已经在PlayStation Plus Collection列表中的游戏如下
第一方:
《血源诅咒》
《往日不再》
《底特律:变人》
《战神》
《声名狼藉:次子》
《瑞奇与叮当》
《最后的守护者》
《最后生还者 重制版》
《直到黎明》
《神秘海域4:盗贼末路》
第三方:
《蝙蝠侠:阿卡姆骑士》
《战地1》
《使命召唤:黑色行动3 僵尸历代记版》
《古惑狼 疯狂三部曲》
《辐射4》
《最终幻想15 皇家版》
《怪物猎人:世界》
《真人快打10》
《女神异闻录5》
《生化危机7》
大前提:如何买到机器
说了这么多,可能大家都在面临一个比较大的问题,买不到,或者说买不起。
参考上一世代主机首发大幅溢价,一机难求的状况,尽管我们已经做好了新机首发价格炒上天的准备,但是实际情况还是非常夸张。
PS5在某宝价格被炒到将近一万元
热度低一些的XSX价格也达到了六千左右
特别是目前两家的国行机还未有消息,在主流的电商渠道通常很难以平价购入新世代主机。加上目前疫情期间肉身出国购买确实麻烦,如果不是有购机刚需的朋友,还是建议根据自身实际情况观望一阵。
考虑到微软近年开始力推XBOX主机与Windows 10 PC互通政策,XGP订阅服务也在逐渐覆盖Windows 10 PC端,未来将会有更多微软旗下的游戏加入到Windows 10商店中。
如果你手头拥有高配电脑,可以考虑购买PC端的XGP服务使用,待主机价格稳定后再出手。
而现今PS4主机全球普及率较高,未来一段时间内出的新游戏想必也不会缺席PS4平台。若是手持PS4想要换机的朋友,同样可以稍微等等,选购《刺客信条:英灵殿》这种可以免费升级到下世代版本的游戏先玩着,等待PS5价格冷却下来之后再购买也不迟。
暂时使用等于号比较即可。
虽然比较两个数相等要用等于号,但是,由于计算机上的浮点数存储的规则的限制,导致数据的比较上要考虑浮点数的精度问题.
所以, 如果你允许数据的偏差在 0.001的话,那么,你可以if ( a - b 0.001) 认为a=b。
当然,这个偏差本身是浮点数,所以,按照IEEE754的标准,但精度浮点数有效位最多小数点后7位。而双精度则是最多小数点后15位。因此,你指定的这个偏差要是“合理”的才行。
浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。
浮点数概念
先澄清一个概念,浮点数并不一定等于小数,定点数也并不一定就是整数。所谓浮点数就是小数点在逻辑上是不固定的,而定点数只能表示小数点固定的数值,具用浮点数或定点数表示某哪一种数要看用户赋予了这个数的意义是什么。
C++中的浮点数有6种,分别是:
float:单精度,32位
unsigned float:单精度无符号,32位
double:双精度,64位
long double:高双精度,80位
然而不同的编译器对它们的支持也略有不同,据我所知,很多编译器都没有按照IEEE规定的标准80位支持后两种浮点数的,大多数编译器将它们视为double,或许还有极个别的编译器将它们视为128位?!对于128位的long double我也仅是听说过,没有求证,哪位高人知道这一细节烦劳告知。
下面我仅以float(带符号,单精度,32位)类型的浮点数说明C++中的浮点数是如何在内存中表示的。先讲一下基础知识,纯小数的二进制表示。(纯小数就是没有整数部分的小数,讲给小学没好好学的人)
纯小数要想用二进制表示,必须先进行规格化,即化为 1.xxxxx * ( 2 ^ n ) 的形式(“^”代表乘方,2 ^ n表示2的n次方)。对于一个纯小数D,求n的公式如下:
n = 1 + log2(D); // 纯小数求得的n必为负数
再用 D / ( 2 ^ n ) 就可以得到规格化后的小数了。接下来就是十进制到二进制的转化问题,为了更好的理解,先来看一下10进制的纯小数是怎么表示的,假设有纯小数D,它小数点后的每一位数字按顺序形成一个数列:
{k1,k2,k3,...,kn}
那么D又可以这样表示:
D = k1 / (10 ^ 1 ) + k2 / (10 ^ 2 ) + k3 / (10 ^ 3 ) + ... + kn / (10 ^ n )
推广到二进制中,纯小数的表示法即为:
D = b1 / (2 ^ 1 ) + b2 / (2 ^ 2 ) + b3 / (2 ^ 3 ) + ... + bn / (2 ^ n )
现在问题就是怎样求得b1,b2,b3,……,bn。算法描述起来比较复杂,还是用数字来说话吧。声明一下,1 / ( 2 ^ n )这个数比较特殊,我称之为位阶值。
没有区别,都是计算除法
要说有区别就是,除数和被除数都是整型数据时,会得到结果的整数部分,小数部分被舍弃,而浮点数除后保留小数部分取值。
虽然比较两个数相等要用等于号,但是,由于计算机上的浮点数存储的规则的限制,导致数据的比较上要考虑浮点数的精度问题.
所以, 如果你允许数据的偏差在 0.001的话,那么,你可以
if ( a - b 0.001) 认为a=b
当然,这个偏差本身是浮点数,所以,按照IEEE754的标准,但精度浮点数有效位最多小数点后7位。而双精度则是最多小数点后15位。因此,你指定的这个偏差要是“合理”的才行。
你使用浮点数来保存数值,并不表示你的业务上来的数据就肯定是7位精度,很可能是3位的精度,就比如我上面给你的例子,千分之一的精度。
当两个浮点数的差在我们可接受的精度范围内时,便可认为它俩是相等的。
这似乎有点像模糊数学的相等啊,比如3.24我可以近似认为是3.2,他们的差在0.05内。
如果你是编成的初学者,可以忽略我上面的回答,暂时使用 等于号比较即可。比如,C语言里的等于是 ==。只是,在某些情况下,虽然表面上看两个浮点数是一样的,但计算机会判断它们是不一样的,这个原因就是我上面回答的内容。
我来说两句