單精度浮點數的表示方式 確定 圖3-7 List 3-2 的執行結果

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

計算機程式語言實習課.
上、下學時 搭乘汽車請舉手!. 上、下學時 搭乘汽車請舉手! 小朋友 是否知道搭乘汽車 要注意到的事情是什麼? 小朋友 是否知道搭乘汽車 要注意到的事情是什麼?
認識倍數(一) 設計者:建功國小 盧建宏.
第四章 數列與級數 4-1 等差數列與級數 4-2 等比數列與級數 4-3 無窮等比級數 下一頁 總目錄.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
TQC+ JAVA全國教師研習會 PLWeb 程式設計練習平台 簡介.
Chapter 5 迴圈.
Visual C++ introduction
第1章 認識Arduino.
2-3 基本數位邏輯處理※.
101北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
4B冊 認識公倍數和最小公倍數 公倍數和最小公倍數的關係.
順德聯誼總會梁潔華小學 六年級 數學科 下學期 數形.
101北一女中 資訊選手培訓營 圖論基礎 Nan.
第十四單元 弧長與旋轉體的表面積.
數位邏輯 第2章數字系統 2-1數目系統 2-2數目系統的互換 2-3二進制有號數的加減運算 2-4文數字碼與同位偵錯碼.
數獨教學 范國祥製作 於新湖國小 數獨資料來源
Java 程式設計 講師:FrankLin.
第一單元 建立java 程式.
圖片格式簡介 張啟中.
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
Ch20. 計算器 (Mac 版本).
第三章 資料型態與輸出控制 本章學習目標 認識Matlab的基本資料型態 練習資料型態的轉換 學習如何控制Matlab的輸出格式
生化實驗 組別 姓名 BCX 結果圖表 結果圖表 結果圖表 結果摘要 (1) (2) (3) 結果圖表 結果圖表 圖表一 說明文字
學習單元:N6 數的性質 學習單位:N6-3 用短除法求H.C.F. 和 L.C.M. 學習重點 : 1. 複習因數分解法求
數學 近似值 有效數值.
網頁資料知多少? 事 實 ? 謠言?.
輸入&輸出 函數 P20~P21.
Introduction to C Programming
小學四年級數學科 8.最大公因數.
我 會 數 數.
CH05. 選擇敘述.
挑戰C++程式語言 ──第8章 進一步談字元與字串
小數除法.
順德聯誼總會梁潔華小學 六年級 數學科 下學期 數形.
北一女中 資訊選手培訓營 圖論基礎 By Nan( ).
DRC with Calibre 課程名稱:VLSI 報告人:黃家洋 日期: 改版(蔡秉均) 1.
挑戰C++程式語言 ──第7章 輸入與輸出.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
MiRanda Java Interface v1.0的使用方法
計算機程式設計 老師:蘇炳煌 助教:楊斯竣.
函數應用(二)與自定函數.
1-4 複數與複數平面 複數及其四則運算 複數平面 一元二次方程式的解.
Chapter 15 檔案存取 LabVIEW中的檔案存取函數也可將程式中的資料儲存成Excel或Word檔。只要將欲存取的檔案路徑位址透過LabVIEW中的路徑元件告訴檔案存取函數後,LabVIEW便可將資料存成Excel或Word檔;當然也可以將Excel或Word檔的資料讀入LabVIEW的程式中。
學生English Central 手機版.
北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
※歡迎挑戰,兩人(隊)中先完成連線即算過關!
Commando War ★★☆☆☆ 題組:Problem Set Archive with Online Judge
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
1-1 二元一次式運算.
1757: Secret Chamber at Mount Rushmore
13194: DPA Number II ★★☆☆☆ 題組:Problem Set Archive with Online Judge
資料表示方法 資料儲存單位.
程式語言與邏輯:主題示範 報告人:國立台灣師大附中 李啟龍 老師 學年度資訊科技概論研習.
因數與倍數.
適用於多選一 可減少if 與 else配對混淆的錯誤.
What is “this”? 在物件導向程式設計中,類別的定義就是在說明如果創建了“這個物件”的話,它會具有那些屬性與功能,以及這些功能是如何實現的。 而所謂的“這個物件”就以 this 來表示。 當我們在JavaScript與jQuery中寫 script 程式(函式)時,“誰”呼叫這個函式,這個“誰”就是該函式中所謂的.
Programming & Language Telling the computer what to do
第三章 Arduino互動程式設計入門 Arduino程式基礎 認識變數 認識數字系統 認識常數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
Array(陣列) Anny
10303: How Many Trees? ★★☆☆☆ 題組:Contest Archive with Online Judge
Chapter 4 Multi-Threads (多執行緒).
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
快取映射 之直接對映 計算整理.
JUDGE GIRL 使用介紹 & 常見問題 TAs :
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

單精度浮點數的表示方式 確定 圖3-7 List 3-2 的執行結果 精度浮點0-01111110-10000000000000000000000及表示 「+1.5 × 2的-1次方」 ,而2的-1次方是0.5,所以+1.5 × 0.5=+0.75。沒錯,剛好就是0.75。 單精度浮點數的表示方式 0-01111110-1000000000000000000000000 確定 圖3-7 List 3-2 的執行結果 利用這個測試程式即可找出10進位小數0.1的單精度浮點數即為0-01111011-10011001100110011001101 (把程式中f = (float)0. 75);的部份改成f =(float)0.1;即可 )。不必擔心,不會要各位讀者去算換算成10進位數字是多少,反正絕對不會剛好0.1。

如何避免電腦計算出錯 電腦計算出錯的原因是ㄧ是使用浮點數處理小數部份 (其他像是「多出位數」或「短少位數」都可能造成計算錯誤) ,無論程式的資料型態是使用單精度浮點數型態、或雙精度浮點數型態都可能會發生計算錯誤的問題。下面介紹兩種避免電腦計算出錯的方法。 第一種處理方式是「錯誤忽略」。有些特殊用途的程式允許微小的運算誤差。例如,利用電腦設計工業產品時,ㄧ個由100個0.1厘米長的零件連接而成的產品不一定非剛好10厘米不可,9.9999厘米應該也可以接受。在一般所謂的「科技運算」領域,電腦運算結果只要有近似值就行,微不足道的錯誤都可以忽略。 另一種處理方式是「先以整數取代小數再進行運算」 雖然電腦在處理小數運算可能會出錯,但整數運算絕對不會有問題 (只要數值在可處理的範圍之內) 。只在進行運算時暫時使用整數,運算結果仍以小數表示。以文章所舉的第一個範例0.1連加100次來說,0.1乘以10倍,改成1連加100次的運算,然後將該運算結果除以10再輸出即可(List 3-3)。有些程式語言甚至具有可自動化進行的資料型態,稱為「貨幣型態」(如Visual Basic的Currency型態等)。

{List 3-3} 小數先改成整數後再進行運算的Visual Basic程式 Sub main() dim d as long dim I as long ‘初始化儲存加總值的變數. d=0 ‘1連加100次. for i=1 to 100 d=d+1 next I ‘求出的結果除以100. d=d/100 ‘輸出結果. msgbox format (d) , vb0k0nly , “0.1連加100次的結果” End sub 以2進位數字表示10進位數字的方式還有「BCD(Binary Coded Decimal)*」的格式,它是利用4個位元表示數字0~9,細節說明不另贅述。如果是要求絕不能發生誤差的運算(如跟金錢等有關),就要選擇暫以整數代用的方法、或BCD法,才能得到正確的運算結果。

2進位數字與16進位數字 圖3-8 利用16進位數字減少位數  2進位數字與16進位數字 最後還有一點補充說明,就是2進位數字和16進位數字 *的關係。以位元為單位表示資料時,2進位數字真的很好用,可惜位數會越拉越長,看起來有點吃力。所以程式設計在實務上偏向以16進位數字取代2進位數字的作法。 Visual Basic的程式裡的數值前面有「&H」,則表示這是16進位數字,C語言也是在數值前面加上「0x」。 2進位數字的4位數剛好等於16進位數字的1位數。例如一個32位數的2進位數字「00111101110011001100110011001101」弱改寫成16進位數字,則為8位數的「3DCCCCD」。利用16進位數字讓2進位數字的總位數整整減成1/4,位數少一點,看起來會比較好懂吧(圖3-8) 即使是有小數的2進位數字,改寫成16進位數字時,小數點以下4位也等於16進位數字的1位數。若2進位數字的最後一組位數不滿4位數,直接補0即可。例如,「1011.011」在後面補0變成「1011. 0110」,即可寫成16進位數字的「B.6」(圖3-9)。16進位數字數字的小數點以下第一位是16-1(1/16=0.00625),應該不必另外解釋了吧。 16進位數字(8位數) 2進位數字(32位數) 0011 1101 1100 1100 1100 1100 1100 1101 = sdccccd 圖3-8 利用16進位數字減少位數

圖3-9 小數部份也是2進位數字的4位數等於16進位數字的第一位 2進位數字(小數點以下3位) 2進位數字(後面補0) 16進位數字 1011.011 --------------------------------------- 1011.0110 -------------------------- 8.6 圖3-9 小數部份也是2進位數字的4位數等於16進位數字的第一位 看完了第2章和本章,各位應該已經了解電腦以2進位格式處理資訊(數值)的構造。下一張繼續說明儲存這些資訊的記憶體。如果各位以後在設計程式時可能同時考慮到記憶體的問題,相信本來只知套用的陣列、指標等也會逐漸明朗化。

術 語 解 說 次方倍數 次方倍數是指各位位數值所乘的值(詳情參見第2章p.28)。 循環小數 同樣數字不停重複下去的數值稱為循環小數,如0.333…。電腦不處理循環小數。 雙精度浮動數的可能表現範圍為:正數4.94065615841247×10-324~1.79 769313486232×10-308、負數-1.79769313486232×10308~-4.9406564584124 7×10-324。單精度浮動數的可表現範圍為:正數1.401298×10-45~3.40282 3×1038、負數-3.402823×1038~-1.401298×10-45。但如內文說明所述,其中尚有部份數值無法正確表示。 浮點數 並非實際小數點位置的方式表示小數部分稱為「浮點數」,如0.12345×103、0.12345×10-1。跟浮點數成對比的則稱為「固定小數」,以實際小數點位置的方式表示小數部分。若0.12345×103、0.12345×10-1寫成固定小數,即為123.45和0.012345。 IEEE IEEE(Institute of Electrcal and Electronics Engineers)是「美國電子電機工程師協會」的縮寫,制定電腦相關領域的各種規格。英文唸法是「I triple E」。 規則運算式 規則運算式是只根據指定的規則,整理並表示資料。不只是小數,字串顯示、資料庫等也都有規則運算式。

BCD BCD(Binary Coded Decimal;2進碼10進位)是另一種表示電腦可用數值的資料方式。早期的大型電腦比較常用BCD,程式語言還有COBOL支援BCD。BCD又分「分區10進位格式」和「聚值10進位格式」兩種。 16進位 16進位數字是每滿16即進1位的計數方法。10~15以英文字母A~F表示。16進位數字的1位數相當於2進位數字的4位數,所以常用來取代2進位數字。

假設對方是天真無邪的小學生,請解釋CPU和2進位數字 欄 專 換成是你該怎麼解釋? 小 假設對方是天真無邪的小學生,請解釋CPU和2進位數字 這個部分希望所有讀者都能來自我挑戰,該怎麼對那些一輩子不會有機會碰到程式的族群說明程式動作的原理。如果各位已經充分理解程式的本質,相信應該能以最淺顯易懂的貼切方式說明清楚。請不要使用專業術語。借用本書的小專欄部份,筆者嘗試挑戰跟小學生或老阿嬤說明的極限。換成是自己的話,該怎麼解釋?希望各位邊讀邊思考這個問題。 大家有沒有看過電腦阿? 有~! 哪裡看過的? 學校裡有電腦。 大家用電腦做什麼? 畫畫、上網。 很好哇,大家都很會用電腦ㄟ。不過,你們知道電腦裡面是做什麼的嗎? ㄟ,不知道… 嗯,那讓叔叔來告訴大家。好,大家看這裡。 那是什麼?

這個叫CPU,是電腦裡面的零件。有了這個零件,大家才能用畫畫的程式啦、上網,它還會算數喔。電腦裡面有很多零件,其中最重要的就是CPU。 它怎麼有那麼多刺刺(針腳)喔? 喔,有人注意到啦。這個針腳是用來通電的。 通電?怎麼通呀、會發亮嗎? 不,CPU不會發亮。有電才能叫CPU做事、告訴他一些數字。好比說,如果要叫電腦算1+2的話,就要命令它「把這些加起來」、還要告訴它1、2這些數字。 要怎麼做才能用電命令電腦、告訴它數字呢? 問的好。這個有一個規定,CPU的針頭有通電的時候是數字1、沒有通電的時候是數字0。我們人類會用10個數字,可是靠電才能動的電腦只會用0和1而已。怎麼樣,很有趣吧? 只有0跟1又數不了幾個數字。 不會喔,你試試看。0、1、10、11、100、…、1010,你看,不是也可以算0~10嗎! 哪有1的後面是10(壹零),好好笑喔。 (呵呵,終於ㄠ到重點了…)怎麼會呢,這種作法叫做2進位數字。我們數數字的時候是0、1、2、3、…、9、10,9的後面是10,對不對?這種數法叫做10進位數字。電腦只會用2進位數字,也就是1和0來數數字,所以0、1的後面就變成10了。 叔叔在講什麼?聽不懂啦。 (冒冷汗…)嗯,那我們換個方式講吧。人類會用的數字剛好是0~9,但是在很遠很遠的宇宙盡頭,有些外星人只會用0和1而已啊。電腦就很像是外星人那樣,這樣,懂不懂? ??? 大聲一點! 懂不懂? 懂…,大概有懂啦。 喔……

xow*vtep worake peolov Chapter 4 方方的記憶體要 圓圓的用 how program works