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-),男,本科,教授.研究領域:數據庫.

主站蜘蛛池模板: 九九视频免费在线观看| 亚洲综合18p| 国产大片黄在线观看| 无码精品国产dvd在线观看9久| 伊人色在线视频| 天天躁日日躁狠狠躁中文字幕| 91在线激情在线观看| 国产激爽爽爽大片在线观看| 亚洲欧美国产五月天综合| 日本一区高清| 在线观看免费国产| 亚洲综合经典在线一区二区| 国产高清在线精品一区二区三区 | 四虎成人精品| 91系列在线观看| 色婷婷国产精品视频| 一区二区三区成人| 在线一级毛片| 欧美va亚洲va香蕉在线| 亚洲男人的天堂久久香蕉网| 成人日韩欧美| 亚洲区第一页| 97色婷婷成人综合在线观看| 亚洲综合狠狠| 在线中文字幕网| 久久精品电影| 久久99国产精品成人欧美| 伊人国产无码高清视频| 国产超薄肉色丝袜网站| 色哟哟精品无码网站在线播放视频| 婷婷激情五月网| 国产精品免费p区| 91麻豆国产在线| 米奇精品一区二区三区| 国产精品免费福利久久播放| www亚洲天堂| 亚洲第一视频网| 日本道综合一本久久久88| 青草精品视频| 伊人久综合| 天天激情综合| 国产欧美高清| 91久久青青草原精品国产| 欧美综合在线观看| 国产麻豆va精品视频| 91精品综合| 国产精品lululu在线观看| 欧美日韩v| 四虎影视库国产精品一区| 亚洲天堂网在线视频| 夜夜拍夜夜爽| 亚洲a级在线观看| 日a本亚洲中文在线观看| 欧美精品在线看| 欧美一级99在线观看国产| 国产在线91在线电影| 最新日韩AV网址在线观看| 97视频免费在线观看| 中文字幕无线码一区| 四虎国产在线观看| 国产成人免费手机在线观看视频 | 午夜毛片福利| 成人综合久久综合| 免费全部高H视频无码无遮掩| 国产精品尤物在线| 日本高清在线看免费观看| 亚洲日韩国产精品无码专区| 国产高清在线丝袜精品一区| 午夜免费小视频| 成人福利在线观看| 婷婷激情亚洲| 中文字幕免费视频| 国产人人干| 国产精品jizz在线观看软件| 日韩精品毛片| 99久久精品免费视频| 久久精品国产精品一区二区| 干中文字幕| 国产一区成人| 狼友视频国产精品首页| 日本在线免费网站| 天堂网亚洲综合在线|