Day 2 浮点运算及记忆体

今天先来谈一下浮点运算的问题,在ARMv8的架构下,主要还是依IEEE 754的规定来作运算标准,唯一差别是32位元的只支援单精度的浮点运算,64位元则支援多精度的浮点运算。

写了这段,大概要让一般人看懂,会有点困难,我比较希望是用简单的方式来说明,避免太多术语或者复杂的程序码扰乱了思考。上述的部分,其实这是在说二进位运算的精准度问题,不管任何一种进位法,其实再互换的过程中都是会有误差的,例如说,当你将二进位转成十进位时,也无法保证没有误差。

写过程序的人都可以了解,即使用目前最流行的爬虫(Python)来写,一样会有二进位运算当中出现误差问题,IEEE 754 就是为了避免二进位的误差,所订出来的一些规定,IEEE 754里面定义了很多东西,其中包括单精度(32 bit)、双精度(64 bit)跟特殊值(无穷大、NaN)的表示方式等等,如果对二进位转换有兴趣的话,在此提供 (网址:https://www.hschmidt.net/FloatConverter/IEEE754.html) ,有兴趣大家可以上去了解一下。

另外,有关支援记忆体模组的部分,ARMv8的一个特色,如果在专业术语上,会说将虚拟位址(virtual addresses)转成实体位址(physical address),我个人觉得,对於想要学习组合语言的人来说,这种对於初学者来说就会变成学习上的一种障碍。虚拟位址,就是一种比较零散的记忆方式,有点像以前的RAM暂存记忆体一样,简单说就是,有些记忆,其实在日常生活里面,只要短暂的记忆就可以,不需要一直占据我们脑袋的记忆空间,那麽这种用完即丢的记忆,就是所谓的虚拟位址,平常不会一直使用,当我们需要使用的时候,ARM组合语言,就会把它转成上面说的实体位址,也就是转换成二进位,让电脑记住并且使用,至於说如果要保留下来,就会存入实体记忆体模组内,也就是记在脑海里,留下深刻的记忆。

以上就是把这两个部分都是很基础的概念,在此先作简单的说明。


<<:  Day 4 该说的还是要先说!

>>:  Day 4 Swift语法-基础篇(2/5)-Collection Types

[Day27] Flutter with GetX connectivity

connectivity侦测网路状态 判断当前是Wifi或是一般手机网路 在connectivity...

Day 12 CSS <圆角边框、盒子阴影>

圆角边框 使用border-radius圆角边框样式,可以修改盒子边框变成圆角 语法: border...

鬼故事 - 不修拉,这辈子都不可能修的

鬼故事 - 不修拉,这辈子都不可能修的 Credit: 天兵公园 灵感来源:UCCU Hacker ...

Day-30 学习 Helm (上)

前言 Kubernetes是一个可以帮助我们管理微服务的系统,为了因应功能项的不同,Kubernet...

Day 11 : 用於生产的机械学习 - Data Labeling 资料标注

标注资料与特徵工程是处理资料重要的步骤,目的都是为了让模型效果最佳化,标注的一致性、特徵工程到位都对...