999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C語言中浮點數的表示范圍淺析

2016-05-30 10:48:04田祎樊景博
軟件工程 2016年4期

田祎 樊景博

摘 要:浮點數是C語言中的一種數據類型,但在標準C中并沒有給出其具體的描述,即數的存儲格式及表示范圍。部分經典的C語言程序設計教程中給出了浮點數的表示范圍,但存在不嚴謹和值得商榷的地方。結合IEEE754標準,就C語言中浮點數內在存儲格式進行分析并給出結論。

關鍵詞:C語言;浮點數;表示范圍

中圖分類號:TP313 文獻標識碼:A

Abstract:The float is a data type in C language,but its in standard C and did not give a specific of description:that is the number of storage format and the scope of representation.Part of classically C language programming tutorial gives a range of floating-point represent,but there is not rigorous and need to discussion.Combined IEEE754 standards,provided analyzation and conclusions in C language in internal storage floating-point format.

Keywords:C language;floating-point;scope of representation

1 引言(Introduction)

浮點數運算是科學計算必須面對的問題,由于計算機內部本身不能精確地處理某些整數或小數,因此在運算時可能存在較大的誤差,運算結果將直接影響到系統的可靠性和安全性等。C語言因功能強大、程序設計靈活且支持底層應用,在科學計算、數據處理等領域中得到了廣泛應用,但C語言在浮點數運算方面也存在數據表示的不精確性等問題。經典C語言并沒有對浮點數專門說明,國內很多教材雖述及浮點數,但也只是給出表示范圍,對于浮點數的解釋尚不夠充分,描述尚不夠嚴謹,因此學生在對浮點數的學習過程中經常存在這樣或那樣理解上的困惑。這里就浮點數的表示范圍,結合IEEE754做進一步的分析,為以后浮點數教學和學習給出參考[1]。

2 浮點數的表示及范圍(The range of floating-point and representation)

總體而言,浮點數的表示形式一般格式指滿足一般的二進制數機器碼(包括定點整數和定點小數)的規定規則;而IEEE754[2]格式則在一般格式上進一步做了一些約定,以便表示數時比較方便和高效。

(1)一般表示法

其主要有兩種格式,分別如圖1和圖2所示。

一般浮點數尾數采用純小數(隱含位為0)來表示,即尾數M與定點小數表示方法相同,由于尾數的符號位決定整個浮點數的符號,故有時采用圖2的形式;當尾數真值為0(不論階碼何值),或階碼的值比能在機器中表示的最小值還小,計算機把該浮點數看成零值,稱為機器零,即浮點數表示不了真值絕對值很接近0的數,只能看成0處理;尾數通常用原碼或補碼表示,階碼一般用移碼或補碼表示。因此其表示范圍如圖3所示。

3 C語言中浮點數的表示(C language representation of floating point numbers)

C語言所使用的浮點數符合IEEE754標準,該標準在1985年審核通過,目的是讓遵守IEEE標準的機器之間運行的程序可以相互直接移植,另外也讓程序員可以輕松寫出有用的、魯棒的浮點數應用程序。

3.1 IEEE754

IEEE標準從邏輯上用三元組{S,E,M}表示一個數N[3],如圖4所示。

IEEE標準754規定了三種浮點數格式:單精度、雙精度、擴展精度,分別對應C語言里頭的float、double和long double。不同的編譯系統對long double型的處理方法不同,Turbo c分配16個字節,而Visual C++6.0則分配8個字節。

單精度:N共32位,其中S占1位、E占8位、M占23位,如圖5所示。

M雖然是23位或者52位,但它們只是表示小數點之后的二進制位數,也就是說,假定 M為“010110011...”,在二進制數值上其實是“.010110011...”。而事實上,標準規定小數點左邊還有一個隱含位[4],絕大多數情況下是1,當N對應的n非常小的時候,比如小于2^(-126)(32位單精度浮點數),于是M對應的m最后結果可能是“m=1.010110011...”或者“m=0.010110011...”。

3.2 楊路明先生教材中對實數類型的描述

楊路明先生在其主編的《C語言程序設計教程》是這樣描述實數類型的:實數類型的數據即實型數據,在C語言中實型數據又被稱為浮點型數據[1]。實型數據的值域在計算機中表示只是數學中實數的一個子集。Turbo C的實型數據又分為單精度型和雙精度型兩種,它們所占內存字節數及取值范圍如表1所示。

3.3 存在問題

根據以上描述,單精度數的取值范圍大約在-1038—1038;雙精度數的取值范圍大約-10308—10308,這個表述本身是沒有問題的,但為了有利于基礎教學,為學生建立一個正確的概念[5],認為以上表述不夠精確。因為尾數隱藏位值可能為1或者0,因此存在最小可以規格化的數。如果按標準規定隱藏位值為1,以上表述的取值范圍就過于籠統,而且從最小可規格化的數到0的表示之間,也沒有任何形式的過渡。比如最小規格化的數再小一點的數,便只能是0了,所以這種籠統的表示一方面不利于學生理解;另一方面,不能使學生真正明白為什么不能進行浮點數判等。

4 結論(Conclusion)

浮點數的表示范圍與階碼和尾數的位數以及采用的浮點數表示格式有關。IEEE754標準中,單精度數所能表示的最大正規格化數,其階碼和尾數的值分別為(11111110)b,(111 1111 1111 1111 1111 1111)b,該數二進制數值為1.(23個1)×2127,而能表示的最小正規格化數,其階碼和尾數部分的二進制值分別為1和0,該數二進制數值為1.(23個0)×2-126。同理可得,雙精度所能表示的最大正規格化數和最小正規格化數,其二進制數值分別為1.(51個1)×21023和1.(51個0)×21022。因此,在基礎課程教學中,應將其表示如表2所示。

由表2學習者可清楚看到浮點數的表示范圍,并可得到兩個問題,一是0如何表示,是否有正負0之分;二是在最小規格化數到0之間的數如何表示。

0的偏移指數為00…00b,有效數字段亦為00…00b。0的偏移指數是保留的,也就是說0的偏移數不能用來表示正常的實數。并且,只有0做除數時,0才有正負之分,否則正0和負0沒有區別。

當N對應的n非常小的時候,在最小規格化數到0之間,稱其為微小數,比如小于2^(-126)(32位單精度浮點數),于是M對應的m最后結果是m=0.010110011...,它的有效數字的最高位為0,這種表示為非規格化表示,引起精度丟失,但有效擴展了能表示的非常小數的范圍。

《C程序設計》是理工類專業學生步入計算機程序設計世界的第一門課程[5],建立科學嚴謹的計算機認識觀尤為重要,而楊路明先生主編的《C語言程序設計教程》是C語言教學的經典教材,在諸如以上討論的方面有值得商榷的地方,應該給予必要的論述,促使學生深入理解計算機的內部世界[6],為學生步入計算機世界打下一個良好的基礎。

參考文獻(References)

[1] 楊路明.C語言程序設計教程[M].北京:北京郵電大學出版社,2008.

[2] 唐朔飛.計算機組成原理(第2版)[M].北京:高等教育出版社,2011.

[3] 朱亞超.基于IEEE754的浮點數存儲格式分析研究[J].計算與信息技術,2010,8(10):1207-1280.

[4] IEEE Standard for Binary Floating-Point Arithmetic.ANSI/IEEE Standard 754-1985.Institute of Electrical and Electronics Engineers,August 1985.

[5] 田祎,樊景博.計算機程序設計語言類課程整合教學探討[J].商洛學院學報,2012,4(26):28-30.

[6] 田祎.項目教學法在計算機語言實驗教學中的應用[J].商洛學院學報,2010,5(24):91-93.

作者簡介:

田 祎(1983-),男,碩士,講師.研究領域:計算機應用技術.

樊景博(1966-),男,本科,教授.研究領域:數據庫.

主站蜘蛛池模板: 精品视频在线观看你懂的一区| 99精品在线看| 欧美啪啪网| 欧美激情网址| 国产乱码精品一区二区三区中文| 精品国产网| 亚洲综合色婷婷中文字幕| 久久久久青草大香线综合精品 | 国产成在线观看免费视频| 国产精品99久久久久久董美香| 国产视频入口| 本亚洲精品网站| 国产亚洲精品97AA片在线播放| 亚洲日本一本dvd高清| 九九热免费在线视频| 国产精品视频第一专区| 国产在线高清一级毛片| 色成人综合| 亚洲专区一区二区在线观看| 91美女视频在线| a级毛片一区二区免费视频| 91久久国产成人免费观看| 国产视频一区二区在线观看 | 国产精品刺激对白在线| 九色视频线上播放| 成人小视频在线观看免费| 99资源在线| 婷婷色狠狠干| 国产一级二级在线观看| 婷婷成人综合| 亚洲国产精品日韩av专区| 天天做天天爱夜夜爽毛片毛片| 亚洲一区二区在线无码| 精品国产成人a在线观看| 青青青草国产| 午夜国产理论| 亚洲国产一成久久精品国产成人综合| 扒开粉嫩的小缝隙喷白浆视频| 国产成人亚洲无码淙合青草| 久久精品91麻豆| 亚洲欧美精品一中文字幕| 香蕉在线视频网站| 国产无码高清视频不卡| 免费人成网站在线高清| 国产00高中生在线播放| 国产成人亚洲综合A∨在线播放 | 国产精品无码AV中文| 欧美特黄一级大黄录像| 国产成人精品高清在线| 暴力调教一区二区三区| a级免费视频| 97在线免费视频| 日韩午夜片| 香蕉国产精品视频| 18禁色诱爆乳网站| 免费毛片网站在线观看| 国产精品国产三级国产专业不| 欧美成人免费一区在线播放| 十八禁美女裸体网站| 青青草原国产精品啪啪视频| 久久精品丝袜高跟鞋| 在线精品欧美日韩| 久久国产黑丝袜视频| 日本一区二区三区精品视频| 欧美在线导航| 亚洲精品国偷自产在线91正片| 99热这里只有精品国产99| 亚洲成网777777国产精品| 亚洲综合18p| 成人另类稀缺在线观看| 91亚瑟视频| 国产精品成人免费综合| 国产在线第二页| 亚洲有无码中文网| 国产亚洲欧美在线中文bt天堂| 日韩国产精品无码一区二区三区 | 亚洲第一视频免费在线| 亚洲国产91人成在线| 色综合a怡红院怡红院首页| 在线国产欧美| 欧美日韩亚洲综合在线观看| 国产精品久久久久久影院|