日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

深入理解计算机系统(2.7)------浮点数舍入以及运算

發布時間:2025/3/20 windows 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入理解计算机系统(2.7)------浮点数舍入以及运算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇博客我們講解了二進制小數如何表示以及IEEE浮點標準。而且我們也提到過因為這種表示方法限制了浮點數的范圍和精度,浮點數只能近似的表示一個數。

  比如 數字1/5,我們能用十進制小數 0.2 準確的表示,但是我們卻不能把它準確的表示為一個二進制小數,我們只能通過增加二進制表示的長度來提高表示的精度。如下:

  

  那我們該怎么辦呢?

?

1、舍入

  對于不能精確的表示的數,我們采取一種系統的方法,找到“最接近”的匹配值,它可以用期望的浮點形式表現出來,這就是舍入。

  舍入一共有四種方式,分別是向偶數舍入、向零舍入、向上舍入以及向下舍入

  可以看下面的例子:

  

?

?  向偶數舍入,是將數字向上或向下舍入,使得結果的最低有效數字是偶數;而向零舍入則是向靠近零的值舍入;向上舍入則是向比它大的方向靠近;向下舍入則是向比它小的方向靠近。

  這四個我們可以用一個直角坐標系來理解:

  

  除了向偶數舍入以外,其它三種方式都會有明確的邊界。這里的含義是指這三種方式舍入后的值x'與舍入之前的值x會有一個明確的大小關系,比如對于向上舍入來說,則一定有x <= x'。對于向零舍入來說,則一定有|x| >= |x'|。

  那么我們什么時候會使用向偶數舍入呢?

  1、比如舍入一組數值,計算這些值的平均數中引入統計偏差,如果向上舍入,那么得到的平均值會比這些數本身的平均值略高;向下舍入,則會偏低。而向偶數舍入則會避免這種偏差,在50%的時間內,它向上舍入,剩下50%的時間內,它向下舍入。

  2、在我們不想舍入到整數時,我們只是簡單的考慮最低有效數字是奇數還是偶數。

?  通常情況下我們采取的舍入規則是在原來的值是舍入值的中間值時,采取向偶數舍入,在二進制中,偶數我們認為是末尾為0的數。而倘若不是這種情況的話,則一般會有選擇性的使用向上和向下舍入,但總是會向最接近的值舍入。其實這正是IEEE采取的默認的舍入方式,因為這種舍入方式總是企圖向最近的值的舍入。

?

?2、浮點運算

?  在IEEE標準中,制定了關于浮點數的運算規則,就是我們將把兩個浮點數運算后的精確結果的舍入值,作為我們最終的運算結果。正是因為有了這一個特殊點,就會造成浮點數當中,很多運算不滿足我們平時熟知的一些運算特性。

  我們可以先看下面這段程序輸出結果:

1 2 3 4 5 6 7 public void testFloat(){ ????????float f1 = 3.14f + 10000000000f - 10000000000f; ????????float f2 = 3.14f + (10000000000f - 10000000000f); ????????System.out.println(f1); ????????System.out.println(f2); ????????? ????}

  結果都是 3.14 嗎?

  

  我們看到 f1 的值是0,f2的值才是3.14。為什么呢?這是因為前面3.14f+10000000000f ?時,會將 3.14 這個有效數值舍入掉,而導致最終結果為0.0

  f2 由于括號的存在,會先進行括號里面的運算,結果是0,然后在與3.14相加。

  也就是浮點運算不滿足加法的結合律?a + b + c != a + (b + c)。同時乘法結合律也不滿足:a * b * c != a * (b * c);還要分配律也不滿足:?a * (b + c) != a * b + a * c

  浮點數失去了很多運算方面的特性,因此也導致很多優化手段無法進行,比如我們試圖優化下面這樣一段程序。

1 2 3 4 5 6 7 /*?? 優化前?????? */ ????????float x = a + b + c; ????????float y = b + c + d; ????????/* 編譯器試圖省去一個浮點加法????? */ ????????float t = b + c; ????????float x = a + t; ????????float y = t + d;

  上面優化前是進行了四次浮點運算,而編譯器優化后只需要進行三次浮點運算。但是這中間的 x 可能回產生與原始值不同的值,因為它使用了加法運算不同的結合方式。所以現在的編譯器都傾向于保守的方式,避免任何對功能產生的優化,即使是很輕微的影響。

  另外,浮點加法滿足單調性屬性:如果 a>=b,那么對于任何a、b以及 x 的值,除了 NaN,都有 x+a >= x+b。無符號或者補碼加法不具有這個實數(和整數)加法的屬性。

?

?3、總結

?  好了,那么到此《深入理解計算機系統》前面兩章的內容我們就結束了,這里我們主要需要了解無符號和補碼編碼格式,以及它們的運算。然后擴展到整數的表示和運算,實數的表示和運算,在實際編程中,我們會經常和數打交道,如何避免一些錯誤,相信看完后會有個大概的了解了。那么接下來我們將學習第三章,這將是一個全新的世界——匯編語言。這肯定比我們前面講的要有趣多了,前面都是和0或者1這樣的數字打交道,后面至少是一種編程語言,相信會更加有趣。

?

轉載于:https://www.cnblogs.com/ghjbk/p/7602919.html

總結

以上是生活随笔為你收集整理的深入理解计算机系统(2.7)------浮点数舍入以及运算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 动漫av一区二区 | 国精产品一区一区三区免费视频 | 色偷偷91| 97免费公开视频 | 第一章婶婶的性事 | 热久久av | 九九综合九九 | 911香蕉视频| 99视频免费在线观看 | 黄色一级片 | 欧美一级免费视频 | 东方伊甸园av在线 | 免费av网站在线看 | 国产免费av片在线观看 | 美女福利在线视频 | 一区二区三区亚洲视频 | 男人的天堂毛片 | 国内毛片毛片毛片 | 性高潮网站 | 五月天中文字幕 | 成人区人妻精品一区 | 亚洲性欧美色 | 18成人免费观看网站 | av免费天堂 | 国语对白少妇spa私密按摩 | 中文字幕一区二区人妻电影丶 | 国产在线网址 | 男女搞鸡网站 | 黄色一节片 | 婷婷丁香综合 | 美女扒开下面让男人捅 | 97爱爱| 天天综合人人 | 精品国产18久久久久久二百 | 亚洲视频综合 | 女性向小h片资源在线观看 日本天天操 | av黄色免费观看 | 五月天激情视频在线观看 | 色图综合 | 亚洲天堂毛片 | 97在线观看免费视频 | 人人做 | 免费日本黄色 | 成人免费毛片xxx | 亚洲一区在线电影 | 亚洲成av人片在线观看无码 | 亚洲免费观看高清完整 | 天天婷婷 | 老司机av影院| 丁香av | 国产精品久久国产精麻豆96堂 | 女教师三上悠亚ssni-152 | jjzz黄色片 | 欧美八区 | 2021av在线| 欧美bbbbbbbbbbbb精品 | 黄色一级小视频 | 全部免费毛片在线播放高潮 | 免费av网站在线播放 | 草逼网站 | 色哟哟免费在线观看 | 久久综合综合久久 | 男人操女人网站 | av免费亚洲| 成人午夜视频免费观看 | 亚洲色图欧美视频 | 日本女人毛茸茸 | 欧美性一级片 | 性欧美在线观看 | 久青草国产在线 | 国产学生美女无遮拦高潮视频 | 精品91久久久久久 | 国产视频不卡 | 一本到高清 | 国内偷拍av | 欧美成人h版在线观看 | 天天欧美| 成人av久久 | 日日操狠狠干 | 久久9热 | 四虎永久免费在线观看 | 国产又粗又猛又爽又黄91 | 欧美精品在线一区二区 | 无遮挡的裸体按摩的视频 | 免费爱爱网站 | 国产精品老熟女视频一区二区 | 蜜臀久久 | 欧美日韩一区二区在线 | 一级一片免费播放 | 黑人巨大精品欧美一区二区 | av资源网站| 91av观看| 成人黄色一级视频 | 伊人超碰在线 | 日本a在线播放 | 久久aⅴ国产欧美74aaa | 日本一区精品视频 | 国产精品美女久久久久久久 | 日韩伦人妻无码 |