粉丝123获赞528

flot 四个字节,浪八个字节,从字节数量上看,浪的空间要比 flow 的空间大,但实际情况下是 flow 空间比浪空间大,这是因为什么?这是因为他底层存储数据的方式不一样。 福禄特四个字节,所以他是占三十二个比特位。那么对于伏点数来说,带小数的这些数字来说,在计算机当中他是怎么存的呢?他的二斤之位啊,是这样的,被分割成三部分,其中从左边开始第一个比特位啊,他是符号位, 占一个比特位,用 s 表示,那么后面有八个比特位。这八个比特位其实就是指数位,我们用 e 来表示,后面呢,有二十三个比特位,二十三个比特位,哎,他是对应的是尾数位,用 m 表示。那么你这个二进之位要想转换成现实生活中的十, 禁止这样的数字,你需要通过一个七五四标准进行转换,而下面就是这个七五四标准,那么负一的 s 次密,这个 s 有可能是零,也有可能是一,如果是零的话,那就是任何数的零次密,他都是一吗? 如果是零的话,就表示整体得出的是什么呀?哎,一乘以后面的,那么一乘以后面的这个数字,那一定是个正数。如果 s 是一个一,那负一的一次方,那就是负一。负一乘任何数,最后得出的一定是负数,所以左面这个就是一个符号位, 那么这个一点 m, 这个 m 是什么? m 其实就是我们的这个尾数啊,这个尾数,然后呢继续往后乘,乘以二的什么呀?一减一百二十七,那么这个一呢,很重要,那么一其实就是指数,那么指数这块假如说最大值是八个一,最大值八个一,我们都知道他 是二百五十五,二百五十五减去一百二十七,那其实就是,哎,一百二十八,那么大家都知道浪呢?他最大值可以取到二的六十三次方减一,但是呢我们可以看到这里都已经达到二的一百二十八次方了,所以我们的 flog 哎,他的空间要比浪的空间大。

好,我们继续看这个 i e e 七五四标准,我们把这个弄清楚。 呃, ie 七五四标准呢?它是一个什么呀?叫做二进制浮点浮点数算数标准啊,我们再拿过来放到这,它是个算数标准,那么以什么呢?以这个不露它啊类型为例啊, 研究研究一下这个 i e e e 七五四标准啊。 第一个 float 类型占用什么呀?占用这个三十二个二 定制位啊。那么 i e e e 七五四标准 将三十二个二进之位啊划分成了三部分啊。划分成三部分, 从左边从左边的二进之位开始啊,左边啊,左右分清楚啊,从左边的二进之位开始。 第一个二进之位是什么呀?符号位啊,第什么呢?呃。第二到九 个二十斤之位是什么呢?是指数位。第什么呢?第十到 到什么呀?三十二个二十斤之位啊,是什么呀?是尾数位,他划分成三个部分,要注意啊,就是,哎,一七五四这个标准啊,他啊,以这个 float 为例啊, float 占用三十二个二斤位吗?啊?划分成三个部分, 从左边的二进位开始,第一个二进位是符号位,一表示负数啊,零表示正数。 哦,好,我自己再强调一下啊,这个内容不是重点内容啊,不是重点内容,作为了解啊,简单知道有这么一个事就行。啊,福,典型里边的,我们主要是为了搞清楚这个问题啊,零点一乘以零点三等于零点三,为什么结果是 boss 啊?所以说你 精通不精通 i e 一七五四标准,这个无所谓了啊,无所谓。这个指数位呢?他是占八个进之位,对吧?二到九吗?二到九吗?九减二七七,再加上第二个,对吧?二到九是八个啊,八个二进之位, 那么这八根因为是指数位啊,然后呢?第十到三十二根,因为这是尾数位,这一共是二十三个二十斤之位。 符号位呢?我们用什么呀?符号位啊,我们用 s 来表示指数位,我们用 e 来表示尾数位,我们用 m 来表示, s e m, 嗯, s e m 啊, 这什么意思呢?就是说我们假如现在有三点一四这样的数据啊,我们就要搞清楚三点一四这个数字在我们的内存里边二进制是什么样的啊?就这意思, 三点一四,对吧?这是一个福点型数据,就是要搞明白啊,这个三点一四在内存中啊,是怎样的啊?一个二进之位 是个怎样的二技人位,明白什么意思?完了在搞这件事情啊,所以我们得先了解一下这个标准,因为我们佛典型数据这个东西带小数的,这个数字,他在内存中存储的时候是遵循这个标准的啊,因为我们这个小数带有小 小数点,总不能说在二斤之里边表示小数点,那表示不了,我们只能是说二十斤之位当中多少前多少位是整数啊,后多少位是小数位啊,对吧?我们只能去做这样一个规范标准啊,这种规范标准是,呃, 这个提前制定好的,注意啊, c 语言中是这样, c 加加是这样,加吗?是这样,对吧?其他编程语言都是这样,都是遵循这个标准的 啊。这里呢,我提前准备好了,我给他拿过来啊,我随便拿过来啊,拿过来之后的话,这个二进位是我随便写的啊,我贴过来啊,我放到这个画图工具里边, 那么现在我就可以告诉你,哎,这个就是什么呀?就是就是,这是三十二个二金位啊,来,这个是符号位, 符号位啊,符号位呢,我们用大写的 s 来代表,然后呢,这个位置啊,到什么呢?这个位置我们叫做指数位啊, 指数位,指数位,我们用大气的意义来表示啊,然后这个从这个位置啊开始啊,到这个位置结束,整个这个呢,我们叫做尾数位, 尾数位啊,我们用 m 来表示 啊。其实一个服点型数据在内存中存储的时候,他的二进之位是假如 float 吗?他是三十二位吗?对吧?哎, float 啊, float, 他是三 十二位吗?三十二位啊,其实就是三十二个二金之位。二金之位当中被划分为三个区域,有同老师 double 呢, double 也是这样, double 只不过是六十四位,他同样也被划分成三个区域。 flow 他也是被划分成三个区域 啊,只不过大宝呢,他的位数长,那么他的这个尾数位就长啊。大宝的尾数位长,就意味着他的可以表示的这个小数的长度更长嘛,小数的长度更长表示精度更高嘛,对吧?哎,大宝,我们现在看是 float, 那么现在这个二进制位要转换成十进制的数字,怎么转换呢?对吧?以上的这个二进制位 啊,转换成实禁制。以上这个二禁制位转换成实禁制是需要一个 公式的,这个计算公式是呢?谁呢? i e e e 七五四标准提供的啊,七五四标准提供的, 那么这个公式是什么样的呢?哎,我把这个公式呢给大家写到这啊,作为了解啊,作为了解,再往下研究那就 没有意义了啊。来,我让他稍微大点啊,他公式是这样的,负一啊,小郭 起来,然后是什么呢?是负一的 s 次蜜 啊,来,这样表示,然后乘以什么呢?一点 m 啊,注意加一点啊,然后 m, 然后再乘以什么呢?再乘以二的多少多少次方二的多少次方啊,哎,二的 e 啊,减一百二十七次方啊, 这是什么东西?来,你可能这这个符号不太懂是吧?符号不太懂,我就 换一种写法啊,来这边我就删掉他啊,然后这边呢我也删掉他他这公式呢,让大家搞明白。行吧, 来,有点距离啊,那么这边呢,其实就是 s 小点 s 次方啊,乘以一点 m, 乘以二的多少多少次方多少次方呢?一减去什么呀?一百二十七 啊,是这样一个公式,那么 在 ieee 七五四标准当中他就规定了,你二进制粉漏的三十二位就分成三部分啊,第一个符号位,这八个是指数位,这个剩下二十三位都是尾数位, 分别代号为 s, e, m。 然后呢将 s, e, m 呢带入我们下面的啊这个公式啊,然后带入我们这个公式啊,那这个时候这个二进制 就转换成了他的使劲值,就是通过这个,明白吗?通过他, 通过这个公式啊,将上面的二进制转换成十进制, 对吧,我们可以看一下啊,带一下,往里边带一带啊,简单带一下。呃,颜色的话我们用黑色啊, 括号负一,字体大点大点啊,负一啊,然后呢乘是吧,哎,一点 m, 这个 m, 注意啊,是二进制啊,一点 m, 整个 m 就是这堆吗?是个 m, 以一开始把这一堆二进制位全搬过来,放到这。二十三个啊,一个一啊,我这里写着一个一,后边都是 零啊,所以是二十二个零,一二三四五六七八,九,十十一,十二,十三,十四,十五,十六,十七,十八,十九,二十二,一二二,数一下啊,一二三,四五六七八九,十十一,十二,十三,十四,十五,十六,十七,十八,十九,二十二,一二二二三啊,整个这个东西是那个 m, 一点 m, 然后接下来继续往后乘,乘以二的多少多少次密 啊?二的多少次密呢? 那么就套公式就行了,一减去一百二十七, 那这个一是什么?幺二八个吗?二斤之位吗?幺二四,这是八呀, 对不对?这是多少啊?十六啊,这个二就不就十六吗?哎,这个是不是三十二啊?三十二,没事,算完之后我们再给他删了啊。三十二,三十二,加上 算是十六加八,哎,加加吧。啊,四十八,四十八加八五,哎,这是四十四十八吧。三一四十四十八加八啊,等于五十六, 那么也就是这个一啊,他算在是多少?是五十六,五十六,减去什么呢?一百二十七 sure 啊,五十六减一百二十七啊,他是个负数,对吧?啊,那么他是多少呢? 一百二十七减去五十六啊,那应该是七十一,对吧?负的七十一,二的,负的七十一次方 啊,然后前面这个什么 s, 什么 s 是零,所以这块呢是个零啊,你要注意,经过上面的这个公式, 把这个二进制呢带进去,带进去之后啊,就变成这个样子,然后再把这个数算出来,注意,这是个二进制位啊, 二斤之位,二的负的七十一次方,表示前面这个二十斤之位和他相乘的话,相当于这个小数点往前挪七十一个,明白吗?小数点,这个小数点往前挪七十一位,往左挪七十一位 任何数的零字方,对吧?哎,这个负一吗?是吧? 都等于一,是吧?负一的零次密啊,他是一,所以呢?一乘以这些东西,最后算出来他是个正数啊,所以这个符号位应该是零,他就是正数。如果这个符号位是个一的话,那这个位置啊, s, 这个就是一,一的话,负一 一的一次密,那还是负一,负一乘任何数他都都是负数吗?所以这个公式啊,你应该能够看懂,就他采用的通用公式就是这样的,负一的 s 次密乘以一点 m 乘以二的啊,一减一百二十七次密, 通过二进制转换,转换成十进制,注意啊,现在这个一点一点 m, 这个 m 后边这是二进制啊,整个这是二进制,然后乘以二的负七十一次方,表示说我们前面那个二进之位小数点往左啊,往左 负的吗?对吧?哎,一位一二一七十,一位负一的零次方零,任何时候零次方等于一,所以这个是个正数,但是因为为什么是个正数?因为符号位是个零吗?符号位如果是个一的话,你想套进去公式,你负一的一次密,那看 负一啊,负一乘任何数得数就是负数吗?对不对?所以你这个公式是这样的, 那么这个时候呢?我,呃,我们再往下算就没有必要了。各位啊,也不要研究,也不不需要研究那么透彻,说再往下是多少,再算,再算,哎,不要算了啊,最主要的点,哎,咱们要说到,说到哪呢?大家注意看啊, 就说呀,我们 float 类型的三十二位二进制是这样,那么它分为三个部分,你要了解到每一部分代表什么,第一部分符号位,第二部分指数位,第三部分是尾数位。那么他这个东西怎么能转换成使劲制?是通过这个公式可以转换成使劲制,你知道这些东西, 那有时候老师这个公式我需不需要背,那?没没,没必要,没用啊,没有用这个公式也不要去了解啊,这是一个标准, i e 一一七五四标准啊,就是这样规定的,你采用这个格式存储,采用这个公式转换,他就得出使劲制的值。 所以呢,大家通过这个学习呢,可以看到他和我们之前所学的什么拜他上他印他浪的存储方式完全是不一样的, 因为在我们的这个二进之位当中啊,他有一个指数位的存在,那你想想这个指数位最大值是多少? 指数为最大值,其实说白了就是七八个一一二三四五六七八,这八个一全放进去,一一一一一一全放进去, 对吧?到这是一百二十七啊,呃,零,后边都是一,大家还记不记得是什么呀? 是一百二十七吧,对吧?前面这位是一百二十八,一百二十七加一百二十八,是不是二百五十五,你想象一下,如果说所有的都是一,那是不是二百五十五? 思考一下,就是这个里面不是有个指数位吗?各位指数位,如果这个都是一的情况下,八个一转换成,哎,这个,呃,使劲制是不就是二百五十五? 那如果这个亿他是二百五十五的时候,你有没有考虑到二百五十五减去一百二十七,二百五十五,这个数字减二百五十五亿吗?一百二百五十五减去一百, 其他是不是就是一百二十八?那么也就是二的一百二十八次密,就是这个位置可以出现的最大值是二的一百二十八次密, 不是负的啊,是二的一百二十八次米。那,那这个时候大家就想起来了,想起什么了?回来看,往上走,我们这个位置的取置范围是不就不对了 啊?有同学可能已经注意到,有同学可能没有注意啊,我们在讲这个数据类型,八种的时候,拜托少的英特朗福,大伯布林差幺二四八四八幺二,然后体制范围,我写的这几个,这几个,这几个对吧?长整形啊。 我当时还给大家说了,为什么是二的七字方减一,为什么是这个值啊?但是当时我没有提这个 flow 和大宝,我就随手往这写了一个,这个东西和这 东西啊,其实这里个,这里这个反这个曲范围是不对的。 二的三十一次方,对吧?减一,二的六十三次方减一。你没看见这个和上面这个和这个一样了吗?不一样,注意不漏他啊,四个字结, 他这个位置最大的次密数可以达到多少?刚才你已经看见他可以达到一百二十八次方,二的一百二十八次方,因为他是采用指数的方式来表示的, 那完全不是一个量级的,不是一个级别的,所以通过这个我也想告诉大家啊,虽然我们的 flow 它它是占用四个字结 印,他呢,也是占用四个字结,浪呢,他占八个字结,对吧?那我粉漏的容量大还是浪容量大? 注意是 float, 他的容量大,因为浪只是长整形,单纯的数字存储就是一堆二斤只,二斤直接找上十斤只。那这个 float 呢,他在里边使了个坏啊,使了一个小小妙招。什么小妙招啊,其实说白了就是次密 啊,他用其中的某一段二进之位得出的这个十进制,以这个值减去一百二十七来作为一个密啊,作为一个指数。那你这个完全表达的含义啊, 就和他不一样了。所以弗洛特虽然是四个字结,但是他的容量啊,要比我们浪的容量还要大 啊,这个取之范围是不对的啊。所以这里呢,我们要说一个东西,各位啊,说一个东西 就是第四条啊,就是八种基本数据类型,容量从小到大 排序啊,或者是从小到大的顺序是什么样的? 八种基本数据类型,容量从小到大。 bet short, int, long, float, double 啊,不吝不参与啊,因为基本数据类型转换里边没有不玩 对吧?啊,差,那么差,他也是两个字节啊,所以说差呢,他和少他,他的容量大小是一样的,只不过差呢, 他可以表示更大的这个正常数,因为差没有正负之分嘛来,所以这边呢,和 soft 对齐, bet shot in 浪, float double, 然后唱和 shot 啊,其实容量相同啊, 叉和少的容量相同,都是两个字结,只不过叉可以表示更大的正整数 啊,八种基本数据类型从小到大的顺序是这样的一个顺序啊, flow 他 容量比浪还要大啊,虽然他是四个字节,但比浪要大,所以在这里呢写上 float。 由于什么呀? float 的这个特殊存储结构 导致了什么呢? float 虽然是四个字节,但是比八个字节的浪类型容量还要大还要大啊!


二点八点二使用浮点数值对于大多数使用浮点数值的计算来说,类型 double 就足够用了,但是应了解使用浮点数变量的局限和缺点, 如果不小心,结果可能不准确,甚至不正确。下面是使用浮点数值时常见的错误原因,一些小数值没有准确转换为二进制浮点数值,在计算过程中很容易把一些小错误放大为大错误。 考虑两个非常接近的数值之间的区别会丧失精度。如果考虑两个 float 数值的区别,而这两个数值仅在第六位的数字有区别,那么其结果是只有一或两位是精确的,其他位则可能出错。处理范围较宽的数值会导致错误。可以用 一个简单的例子来验证一下。把两个值存储为精度为七位的 float 类型的浮点数,可是其中一个值比另一个值大十倍。 对他们执行相加操作,把较小的值加到较大值上,任意多次较大的值是不会有明显变化的。下面看看这些错误在实际中是如何放大的,虽然这是一种有点虚拟的情况。程序视力二点六浮点数计算中的错误 下面的例子说明了前两个浮点数是如何组合在一起而出错的。 program 二点六 floating point errors include a stream using namespace std intermain float value e 零点一 f float value 二等于二点一 f value e 零点零九 f 数币零点零一 value 二二点零九 九 f show b 零点零一 called value 一 value r endle show output zero turn 零显示出来的值应是零,但这个程序的结果如下,七点四五零五八一零零九例子的说明,产生错误的原因是存储的数值不准确。 如果添加代码,输出 value 和 value 二修改后的值,就会看到他们之间的差异。当 当然, value 一和 value 二的值之间的最终差异是非常小的,但可以在其他可能放大错误的计算过程中使用这个完全伪造的值。如果把这个结果乘以一千零一十,就会得到七点四五,而该结果本应是零。 注意不要依赖时静置值的精确。浮点数表示改变输出,此程序以非常明智的方式输出浮点数值。浮点数 数值的小数位数为五位,并使用科学技术法及尾数加指数的形式。还可以通过某些输出操纵程序使用正常的小数表示法来显示结果。 program 二点六 by experimenting with floating point output include a stream include a man appears in name spacestd intermain float value e 零点一 f float value 二二点一 f value e 零点零九 f 输 b 零点零一 value 二,二点零九 f 输 b 零点零一 culp set precision 十四 fixed change to fix notation called value 一 value r ando show output zero culp set precision 五 scientific return to scientific notation called value e value r endo show output zero return 零。运行修改后的 程序得到的结果如下,零点零零零零零零零七四五零五八七点四五零五八一零零九例子的说明,这段代码使用了三个新的修饰符, set precision fix her scientific set precision 指定了用多少位数来表示浮点数。 fixed 和 scientific 互相补充选择显示浮点数的格式。在默认情况下, c 加加编译器会根据输出的值来选择 scientific 或 fixed。 在这个程序的第一个版本中, 编译器很好的执行了这个任务。位数的默认值没有在标准中定义,但通常使用五。下面看看对该程序的修改。正如本章前面使用 satury 那样,需要添加对 i am manip 的 include 语句。除此之外,还有 下面四行代码, cut set precision 十四、 fixed change to fix notation cut value of value are endo shoot output zero cut set precision 五 scientific return to scientific notation cut value of value r endo 输入 output zero 第一行代码很简单, 使用操纵程序就像使用 satury 那样,用插入运算符把他们发送到输出流中,其结果会清晰的显示在输出的第一行上。 浮点数值占据了十四位,且没有指数。但是这些操纵程序不同于 satura, 因为他们是模式化的。 换言之,他们的效果要在程序结束后才显示出来。这就是上面使用第三行代码的原因。必须显示设置 scientific 模式,精度设置为五,才能返回默认的结果。但我们成功了,因为输出的第二行与原程序的结果相同。

哈喽,我们这一期视频来跟大家去填坑了啊,就是关于零点一一,他在计算机里面到底是怎么存储的,上一小节跟大家说了,他采用的方式是 ie 七五四的标准,那在这个标准里面呢,我们以及 flow 提距离, 因为符号总位数小一点啊,这样画好,画一点,一个 w 十四位,画起来太费劲了。那在这个情况下呢,他规定了说我们的存储形式大概是这样的,说最高位这有一位,这一位叫什么?叫做符号位,用来表示当前这个数值,他的正负信, 好吧,然后呢,中间这有一部分,那中间这一部分呢?注意他占一位,符号位只占一位。然后呢,中间这一部分呢?占八位。那八位的这个东西表示什么呢?表示他的 叫做街马位,好吧,他叫街马。什么叫街马呢?我们在算的时候你就知道了。然后呢,还有一部分,因为我们知道福老子的他整个内存是四个字节,那四个字节的话应该是四八三十二位, 他有三十二位,那在这种情况下,三十二减去个九还剩多少?三十二减去九,还剩一个二十三,是这样吧,那二十三位呢?我们管他叫做尾数位。 好了,这就是他整个的一个存储方式,那接下来就开始算喽,对吧?那正负信这个事很好判定,对吧?所以他是正数,正数的话,我们很容易就不能算出最高位,他这个值就是零,好吧,然后呢,接下来就到了街马位,这个街马位怎么算呢?街马位是这样的啊,街马 和磊数这样东西可以放在一起算,只不过今晚为在计算的时候有一个特殊的小技巧,就什么呢?我们要将当前的这个数值进行一个规划,或者是规格化的表示,就是把它用科学技术法的方式表示出来。那他科学技术法表示的时候,很多人会想成说,那是不是就是零点 一一零零一一零零一一零零,然后乘以二的几次方?是这样的,但实际上呢,在二进制里面的科学技术法,人家强制要求你的首位,好吧,也就是我们的个位上的数字必须是一,所以这种情况下,这个数在规格化表示之后呢,他的结果应该是我写上叫做一点一零零一 一零零一一零零,因为是一个无限循环嘛,所以这样就一直循环下去了。好吧,那这循环完了之后,你会发现这个小数点呢,相当于在表示完成之后, 他是向右挪了一位,两位,三位,四位,是不是四位?好吧,那所以在这个最后呢,这个数值的最后应该让他乘上一个二的负四次方, 好吧,那这样小数点就可以挪嘛,那既然他是乘以二的负四次方呢,那在这个地方呢,就说的接马位,说的就是这个负四,好吧,他就是接马。 ok, 那我们的负四在日本就放一下就可以了。但是呢,他又要求了,在 ie 七五四标里面要求他的接马位在去存储的时候要做一个 叫,这个叫做一百二十七,在这个地方呢,要去加上一个当前的一百二十七,不好意思,一百二十七减去一个当前的这个值,好吧,你都可以这样说,这样就当前计算出来, 杰玛瑞负四加上一百二十七才是你真正的杰玛瑞,那就是一百二十三,好吧?然后你要做的就是把一百二十三呢给他再转成一个二极致,那最后这一步呢就是尾数,尾数就是这一部分东西,因为我们已经明确的知道这一位一定是一,所以在存储的时候他存的是一零零 一,一零零一,一零零无限循环下去。哎,这就尾数,那尾数呢?往后数二十三位就可以了,那这样的话连起来就是我们的 零点一,他对应的一个存储方式就是零,然后这里面存一百二十三的二经制,然后往后数二十三位的大 就可以了,最后表示的时候再反一遍就行。好了,我们这一小节一起带大家去看了一下就真正的转换过程,我是老区,每天一个编程小技巧,加油。

编程中零点一加零点二为什么不等于零点三?你知道吗?一直以来,我都认为电脑的数学计算要比人好,直到我尝试在编程中将零点一和零点二相加,得到的结果却是零点三很多零,最后一个四。 我以为这是因为 ts 语言不够严谨导致的,所以我使用 pice 以及其他语言,结果却是相同的答案。所以问题并不在于语言,而是数学计算中的福点运算。 由于计算机内存有限,大部分编程语言都遵循 i e e e 七五四标准,将数字存储为双精度福点数这种格式,以六十四位存储数字,这意味着整数最大精度为十五位, 小数点后的最大精度为十七位。由于我们无法确定小数点前后的位数,而且计算机使用的是二进制系统,将辅点数转换为二进制计算之后就会得到精度问题,而人使用的是实进准,所以不会出现精度问题。


同学们大家好,今天我们讲一下数据的福点表示。 在程序设计的学习过程当中,我们已经学过福点数的使用,那么福点数在计算机内是如何表示的呢?那么今天我们深入的了解一下。 首先五点数就是小数点可以移动的数,一个数可以 可以表示成为 n 等于十的意思,你乘以 m, m 呢就是小数, b 呢就是他的接码,也叫做密纸数。 例如九乘以十的负二十八次力,我们可以写成零点九乘以十的负二十七次力, 二乘以十的三十三次密,就可以写成零点二乘以十的三十四次密,那这样的话呢,就表示我们的小数点是可以移动的。 在计算机的二进值当中,我们也可以把 n 表示成这样的一种形式,就是 n 等于二的意思,米乘以 m, m 呢成为尾数,一呢成为密纸数,二呢成为这个数的基数。为了便于不同计算机型号之间的数据交换,八十年代的时候,美国的电气工程师协会提出了一个 福点数的表示标准,今天我们学一下这个标准。以三十二位这个福点数的形式为例,来深入的学习。 一个不点数由三部分组成,第一部分呢是他的符号位是在这个三十二位当中的最高位。接下来八位表示数的接码,这个接码呢是由偏移码来构成的, 他是偏移一百二十七的啊。第三部分是 m, 也就是尾数是一个小数,他呢是由二十三位来构成的,尾数呢要求写成一点 m 的形式, 讲期,在讲期保存的内存的时候,我们要把这个一呢要引去,这样呢来提高数据的精度。 导演在取回那个伏点数的时候,需要恢复该隐藏位置, 例如零点零零零零幺零幺零,我们可以表示成一点零一零,乘以二的负四米,这里边尾数 m 等于零幺零 e 呢 等于五,那接码呢?是天一码,那么大意就等于五,加上一百二十七,等于一百三十二,那这样的话呢,我们就可以把这个数用在计算机内表示出来了。 我们在这里举两个例子,第一个例子哈,若福点数在计算机内存的值位四幺三六四个零,这是十六禁止表示的,求其使禁止的值。 那首先呢,我们把四幺三六四个零,这个是六进制,我们把它写成二进制,最高位为零,表示他的符号。接下来八位 是他的接码,他的接码就是幺三个零,逗号两个零,一个零一零啊。接下来是接码是幺零零零零零幺零, 我们算一下这个码,接码呢是偏于一百二十七的,我们可以求一下这个密指数,密指数就等于一,减去一百二十七,就是刚才那个接码,减去一百二十七, 这个接码我们可以知道是一百二十八,加上二,一共是一百三十啊,那减去一百二十七之后呢,就等于三,那尾数是零幺幺零幺幺零零零零, 后边呢还有十二个点,嗯,那我们恢复这个尾数的隐藏位,在这个尾数的前面加上个一, 那这样的话呢,我们整个数的职位 n 等于负一的 s, 次密 s 就是我们的数幅 s 零 乘以一点 m, 这个一点 m 就是我们刚才恢复的那个尾数,再乘以二的意思咪,这个 e 呢是小 e, 是一个三,那这样的话,我们算下来这个数就是十一点三七五。 好,我们再举个例子,例十进制数位二十点五九三七五,走韩城三十二位福点 来存储。首先分别讲整数和小数部分,转换为二斤至二十,转换为二斤至为一零一零零。啊,我们这个最高位呢是十六十六,加四就是二十, 后面五九三七五,我们转换为零点一零零一一 移动小数点,使其在一和二位之间,那么小数点就在 就是一点零幺零零幺零零幺幺,乘以二的四十米接码大意等于小意四,加上 一百二十七,等于一百三十一,我们把它转换成二进制,就是幺零零零零零幺幺, 数幅 s 等于零,尾数一点零幺零零幺零零幺幺,我们隐藏前面那个一, 那最后我们构成这个数的形式就是零幺零零零零零幺幺零幺零零幺零零幺幺零零,后边还有十二个零, 写成十六英制的话就是四幺 a 四七零零零。好,这样的话呢,我们把这个伏点数啊,从一个内存表示变成使劲之数,再有一个使劲之数做成啊伏点数。那我们就讲, 那我们这里边呢,福点数当中有一个特别的规定,比如说如果接码是二五五的话,那这个时候呢,他是有些特殊规定的。 如果金马是零的时候呢,也有些特殊规定,所以我们的正常的金马是一到二百五十四, 如果偏移的话,一偏一百二十七的时候,就是表示富的一百二十七到正的一百二十七。 那么现在呢,我们就把福点数啊,他在机内表示呢做了一个介绍,那么接下来的话,大家同学们有什么问题可以问一下老师,请问一下福点数转化成整数要注意些什么? 首先啊,福点数跟整数他的表示范围是不一样,我们福点数呢,他的接码最高可以达到一百二十七, 而整数我们他的表示范围他的肩膀最高只有三十一,那这个时候做转换的时候,如果说 这个数浮点数比较大的时候,早按成整数,那整数呢,是表达不了自门大范围的数的话,他呢还不提示我们有错误,这样的话这个错误 是非常严重的。老师,请问一下,三十二位福点数用二十三位表示时,该怎么估算他们会面率呢?福点数的尾数用二十三位来表示,我们可以估算一下他的十斤制的有效数字,大概是七位有效数字 就是如果一个数是一二三四五六七八,那么说呢,可以说他前面的七位是基本准确的,而后边那个八有可能被舍掉了啊。 同学们,今天我们讲了福点数的表示,讲了福点数的数的表示范围,讲了福点数在转换成整数或者其他数的时候要注意的事项,希望同学们在今后的学习当 要注意正确使用伏电术。好,同学们,今天到这再见。

今天我们一起来看一下 mataleb 基本数据类型中的数值型。 mate lab 以数值计算著称,数值型数据是程序中最重要的数据。 mate lab 共定义了十种数值类型,包括两种福点型和八种整数型。我们首先来看一下福点型。 matlab 用双精度或单精度格式表示福点,顺任格式是双精度,但可以用转化函数转化为单精度。 迈特拉布中的双精度福点数和单精度福点数均采用 i eee 七五四中规定的格式来定义。两者的主要 区别呢,是这样的,一个是所占的内存不同,一个是所能表达的数值范围不同。那在这里给出了所占内存和表达范围的一个区别。 例如在命令行窗口输入这三条指令,这个是输出。这里用身高函数对 db 进行了转换,转换为了单精度,可以看到单精度比双精度节省了一半的内存, 但是呢,单颈度需要转换才能得到。用瑞奥 max 和瑞奥内涵数可以分别返回单精度或或者是双精度福点数的最大和最小 控值。例如在命令行输入这条指令,这个是输出,给出了单颈度伏点数的范围是这样一个范围, 将上面代码中的三个换成搭堡,这个是输入,这个是输出,就给出了双精度伏点数的范围,是这样一个范围,可见呢,双精度伏点数的范围要比单精度大的多。 再来看一下整数型。 mate love 中的整数共有八种类型,包括四种有符号整形和四种无符号整形。不同整数类型主要区别有两个,一个是锁着的内存大小不同,另一个是所能 表达的数值范围不同。迈特拉不支持一、二、四和八字节的有符号整数和无符号整数这八种数据类型的名称表示方法和类型转换函数。解这个表, 应用时要尽可能用字结数少的数据类型表示数据,这样可以节约存储空间和提高运算速度。 迈特拉伯默认的类型是双精度福点数,要存储为整数型的数据呢,必须使用转化函数。我们一起来看一下创建整数类型数据的几个方法。比如创建一个有符号的十六位 整数,在命令行窗口就输入这样一条指令,这个是输出。转化函数还可以用来将其他数据类型转化为整形。比如说命令行窗口输入这样两条指令, 这里呢,将 str 字符串里面的每一个字符,包括叹号都转化为了阿斯科马,结果输出为这样一个指令。 使用户字函数可显示有一个变量表示的数组的尾数 字节技术和数据类型。例如我们在命令行窗口输入这样一条指令,这是输出。如果希望知道数据类型并且指定输出,也可以使 用 class 函数。例如在命令行窗口输入这样一个指令,这个是输出。 如果要验证变量是否为整数,可以使用呢? it's integer 函数, 比如咱命令行里面输入这个指令,这个结果就是输出。好,这就是关于迈特拉布数据类型中的数值型。关注我,咱们再来看一下别的数据类型。