版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1章C語言程序設計預備知識教材、參考書與課時安排教材C語言程序設計教程王敬華編著清華大學出版社參考書C語言程序設計教程習題解答與實驗指導王敬華編著清華大學出版社C語言程序設計教程譚浩強高等教育出版社C高級實用程序設計王士元清華大學出版社課時安排授課:54學時上機:34學時學習要求及成績構成學習要求課前請做好預習,課后請做好復習保持課堂安靜,頭腦清醒,思維活躍認真、獨立、按時完成并提交作業(yè)重視上機實踐,有效利用寶貴的上機時間成績構成平時成績(考勤和作業(yè)):20%實驗(含上機考試):20%期末考試:60%第1章:C語言程序設計預備知識
學習的意義
1、什么是計算機系統?
2、計算機中如何表示“信息”?不管哪種類型的信息在計算機中最終都是以二進制數據信息來表示和處理
語言程序設計教程第一章預備知識C計算機系統
硬件系統軟件系統
運算器控制器存儲器輸入設備輸出設備內存外存CPU主機外圍設備系統軟件應用軟件3、什么是程序?程序---數據結構+算法+語言規(guī)范+編譯調試環(huán)境程序包含4個要素:待處理的數據。算法。語言規(guī)范。編譯調試環(huán)境。4、程序是怎么執(zhí)行的?輸入設備內存儲器外存儲器運算器控制器輸出設備信息(如程序、原始數據)(存)數據(取)數據運算命令輸出命令輸出信息(存)數據存取指令程序指令數據輸入指令數據信息控制信息5、程序語言是什么?程序語言是由字符集,保留字、數據類型、語法規(guī)則組成的集合。程序結構的規(guī)范。注釋的規(guī)范標識符命名的規(guī)范。變量和常量定義的規(guī)范數據類型和表達式定義語句規(guī)范函數定義和函數調用的規(guī)范預編譯處理的規(guī)范。其他。6、程序語言==程序設計嗎? 顯然,程序設計≠程序語言
程序設計的最終目標是解決問題。貫穿程序設計全過程的只有“what,why,how”.what:需求是什么?
why:分析符合需求的定義嗎?軟件設計符合分析的結果嗎?
how:怎樣定義需求?是采用面向功能的還是面向對象的分析和設計方法?數據結構怎樣定義?編碼的規(guī)范和接口的定義存在二義性嗎?函數的詳細設計有流程圖嗎?選用哪種開發(fā)語言和平臺?測試方案是否覆蓋了所有的路徑?需求定義需求分析概要設計詳細設計編碼測試維護程序語言和開發(fā)過程哪個更重要呢??7、學習C語言應掌握哪些主要內容語言實質上是一些規(guī)范。學習語言的目的是為了設計程序。程序==數據結構+算法+語言規(guī)范+編譯調試環(huán)境
數據結構:數據類型,包括基本類型(字符類型,整數類型,實數類型)和構造類型(數組,結構體,公用體類型),以及指針類型,甚至由以上類型構成的更復雜的數據結構如鏈表、棧、集合、隊列等。
算法分析:學會繪制流程圖,掌握過程化控制語句(9大類),理解表達式、表達式的執(zhí)行順序和優(yōu)先級,學會定義函數,理解函數參數傳遞機制和函數的運行時環(huán)境。
掌握C語言的其他規(guī)范:包括標識符,變量,常量,程序結構,注釋,命名規(guī)范,宏定義等。掌握C語言的標準庫函數和豐富自己的函數庫。
最重要的是多練習:熟練掌握一門開發(fā)環(huán)境,能熟練地調試應用程序。預備知識學習目標
掌握二進制數的表示及二進制數與其它進制數的轉換方法;掌握機器數的表示形式和表示范圍,特別是補碼表示形式;掌握補碼的加、減運算方法;掌握二進制數的位運算方法;
這些是更好地理解和掌握C語言數據類型(第3章)的基礎。語言程序設計教程第一章預備知識C預備知識學習內容
進位計數制及其轉換(二進制、八進制、十六進制)機器數的表示形式及其表示范圍(原碼、補碼、反碼)二進制數的位運算(與、或、非、異或)本章小結語言程序設計教程第一章預備知識C1.2進位計數制及其轉換
數碼、基與權
數碼:表示數的符號
基數:數碼的個數
權:每一位所具有的值數制語言程序設計教程第一章預備知識C數制基權表示數碼特點10o,101,102,…十進制數0~910逢十進一二進制數0~122o,21,22,…逢二進一八進制數0~788o,81,82,…逢八進一十六進制數0~9,A~F,a~f1616o,161,162,…逢十六進一十進制:4956=4103+9102+5101+610o二進制:1011=123+022+121+12o十六進制:81AE=8163+1162+10161+1416o八進制:4275=483+282+781+58o語言程序設計教程第一章預備知識C進制之間的相互轉換二進制、八進制、十六進制轉換成十進制
方法:按權相加語言程序設計教程第一章預備知識C進制之間的相互轉換二進制、八進制、十六進制轉換成十進制
方法:按權相加十進制轉換成二進制、八進制、十六進制步驟:首先進行整數部分轉換,然后進行小數部分轉換。(1)整數部分轉換原理:方法:連續(xù)除以基,從低到高記錄余數,直至商為0語言程序設計教程第一章預備知識C整數部分轉換舉例例把十進制數59轉換成二進制數5922921427232120(59)10=(111011)2110111111011余余余余余余第一次得到的余數是最低位最后得到的余數是最高位例把十進制數159轉換成八進制數1598198280(159)10=(237)8237余7余3余2例把十進制數459轉換成十六進制數4591628161160(459)10=(1CB)161CB余11余12余1語言程序設計教程第一章預備知識C
(2)小數部分轉換原理:方法:連續(xù)乘以基,從高到低記錄整數部分,直至結果的小數部分為0
在十進制的小數部分轉換中,有時連續(xù)乘以2不一定能使小數部分等于0,這說明該十進制小數不能用有限位二進制小數表示。這時,只要取足夠多的位數,使其誤差達到所要求的精度就可以了。
例將十進制數0.8125轉換成二進制
0.8125×2=1.625(b1=1)最高小數位
0.625×2=1.25(b2=1)
0.25×2=0.5(b3=0)
0.5×2=1.0(b4=1)最低小數位
所以(0.8125)10
=(0.1101)2注意:對于小數部分的轉換式中的整數不參加連乘,第一次乘以2所得到的整數部分是二進制數小數的最高位,最后所得到的整數部分是二進制數小數的最低位。例將十進制數0.8123轉換成二進制
0.8123×2=1.6246(b1=1)最高小數位
0.6246×2=1.2492(b2=1)
0.2492×2=0.4984(b3=0)
0.4984×2=0.9968(b4=0)最低小數位
…………
所以(0.8123)10
≈(0.1100)2例將十進制數0.8123轉換成八進制
0.8123×8=6.4984(b1=6)最高小數位
0.4984×8=3.9872(b2=3)
0.9872×8=7.8976(b3=7)
0.8976×8=7.1808(b4=7)最低小數位
…………
所以(0.8123)10
≈(0.6377)8語言程序設計教程第一章預備知識C二進制八進制
方法:從小數點開始,分別向左、右按3位分組轉換成對應的八進制數字字符,最后不滿3位的,則需補0。
二進制、八進制、十六進制之間的轉換000~0001~1010~2011~3100~4101~5110~6111~7例將二進制數(1101101.10101)2轉換成八進制數所以(1101101.10101)2
=(155.52)8二進制數:
001
101
101.101
0101八進制數:55.52語言程序設計教程第一章預備知識C八進制二進制
方法:將每位八進制數用3位二進制表示即可。
二進制、八進制、十六進制之間的轉換000~0001~1010~2011~3100~4101~5110~6111~7例將八進制數(345.64)8轉換成二進制數所以(345.64)2
=(11100101.1101)2八進制數:3
4
5.6
4011二進制數:100101.110100語言程序設計教程第一章預備知識C二進制十六進制
方法:從小數點開始,分別向左、右按4位分組轉換成對應的十六進制數字字符,最后不滿4位的,則需補0。
二進制、八進制、十六進制之間的轉換例將二進制數(1101101.10101)2轉換成16進制數所以(1101101.10101)2
=(6D.A8)16二進制數:
0110
1101.1010
10006十六進制數:D.A80000~00001~10010~20011~30100~40101~50110~60111~71000~81001~91010~A1011~B1100~C1101~D1110~E1111~F語言程序設計教程第一章預備知識C十六進制二進制
方法:將每位十六進制數用4位二進制表示即可。
二進制、八進制、十六進制之間的轉換例將十六進制數(A9D.6C)16轉換成二進制數所以(A9D.6C)2
=(101010011101.011011)2十六進制數:A
9
D.6
C1010二進制數:0000~00001~10010~20011~30100~40101~50110~60111~71000~81001~91010~A1011~B1100~C1101~D1110~E1111~F10011101.01101100語言程序設計教程第一章預備知識C1.3機器數的表示形式及其表示范圍真值與機器數
真值:一個帶符號數由兩部分組成:一部分表示數的符號,另一部分表示數的數值。一般,直接用正號“+”和負號“-”來表示符號的二進制數,叫做符號數的真值。
機器數:計算機中的數是用二進制來表示的,數的符號也是用二進制來表示的。把一個數連同其符號在內在機器中的表示加以數值化,這樣的數稱為機器數。
一般用最高有效位來表示數的符號,正數用0表示,負數用1表示。
真值:+1011(+11)-1011(-11)機器數:0101111011數值符號數值符號
機器數的表示形式原碼補碼反碼語言程序設計教程第一章預備知識C1.3機器數的表示形式及其表示范圍原碼原碼又稱為“符號數值表示”。在以原碼形式表示的正數和負數中,第1位表示符號位,對于正數,符號位記為0,對于負數,符號位記為1,其余各位表示數值部分。例:N1=+10011N2=-01010[N1]原=010011[N2]原=101010
根據上述原碼形成規(guī)則,一個n位的整數N(包含一位符號位)的原碼一般表示為:
N0≤N<2n-1[N]原=
2n-1
-N-2n-1
<N≤0語言程序設計教程第一章預備知識C1.3機器數的表示形式及其表示范圍原碼
對于這樣的n位整數其原碼表示的數的范圍為:-(2n-1-1)~(2n-1
-1)。字節(jié)(8位)數的范圍:-127--127111………1n-1個1011………1n-1個1語言程序設計教程第一章預備知識C1.3機器數的表示形式及其表示范圍原碼總結:當N為正數時,[N]原和N的區(qū)別只是增加一位用0表示的符號位。由于在數的左邊增加一位0對該數的數值并無影響,所以[N]原就是N本身。當N為負數時,[N]原和N的區(qū)別是增加一位用1表示的符號位。在原碼表示中,有兩種不同形式的0,即:
[+0]原=000…0[-0]原=100…0語言程序設計教程第一章預備知識C1.3機器數的表示形式及其表示范圍反碼反碼又稱為“對1的補數”。用反碼表示時,左邊第一位也是符號位,符號位為0代表正數,符號位為1代表負數,對于負數,反碼的數值是將原碼數值按位求反,而對于正數,反碼和原碼相同。所以,反碼數值的形成與它的符號位有關例:N1=+10011N2=-01010[N1]反=010011[N2]反=110101
根據上述反碼形成規(guī)則,一個n位的整數N(包含一位符號位)的反碼一般表示為:
N0≤N<2n-1[N]反=
(2n-1)+
N-2n-1
<N≤0語言程序設計教程第一章預備知識C1.3機器數的表示形式及其表示范圍反碼
對于這樣的n位整數其反碼表示的數的范圍為:-(2n-1-1)~(2n-1
-1)。100………0n-1個0011………1n-1個1語言程序設計教程第一章預備知識C1.3機器數的表示形式及其表示范圍反碼總結:正數N的反碼[N]反與原碼[N]原相同。對于負數N,其反碼[N]反的的符號為1,數值部分是將原碼數值按位求反。在反碼表示中,有兩種不同形式的0,即:
[+0]反=000…0[-0]反=111…1語言程序設計教程第一章預備知識C1.3機器數的表示形式及其表示范圍補碼補碼又稱為“對2的補數”。在補碼表示法中,正數的補碼表示同原碼和反碼的表示是相同的,而負數的補碼表示卻不同。對于負數的補碼,其符號位為1,而數值位是將原碼“按位求反,末位加1”。例:N1=+10011N2=-01010[N1]補=010011[N2]補=110110
根據上述補碼形成規(guī)則,一個n位的整數N(包含一位符號位)的補碼一般表示為:
N0≤N<2n-1[N]反=
2n
+
N-2n-1
≤N<
0注意:同原碼、反碼的區(qū)分!!!語言程序設計教程第一章預備知識C1.3機器數的表示形式及其表示范圍補碼
對于這樣的n位整數其補碼表示的數的范圍為:-2n-1
~(2n-1
-1)。100………0n-1個0011………1n-1個1語言程序設計教程第一章預備知識C1.3機器數的表示形式及其表示范圍補碼總結:正數N的補碼[N]補與原碼[N]原和反碼[N]反相同。對于負數N,其補碼[N]補的的符號為1,數值部分為反碼數值加1。在補碼表示法中,0的表示形式是唯一的,即:
[+0]補=000…0[-0]補=000…0注意:絕大多數機器數的表示采用補碼表示法。象C語言中整數在計算機中就是以其補碼的形式存儲的。語言程序設計教程第一章預備知識C原碼反碼補碼+7000001110000011100000111-7100001111111100011111001+0000000000000000000000000-0100000001111111100000000數的范圍11111111~01111111(-127~+127)10000000~01111111(-127~+127)10000000~01111111(-128~+127)(用一字節(jié)表示數)負數補碼轉換成十進制數:最高位不動,其余位取反加1例補碼:11111001
取反:10000110
加1:10000111=-7<>語言程序設計教程第一章預備知識C1.3機器數的表示形式及其表示范圍無符號整數在某些情況下,要處理的數全是正數,此時再保留符號位就沒有意義了。我們可以把最高有效位也作為數值處理,這樣的數稱為無符號數。
16位無符號數的表示范圍是:0≤N≤65535,
8位無符號數的表示范圍是:0≤N≤255。字符表示法計算機中處理的信息并不全是數,有時需要處理字符或字符串,例如從鍵盤輸入的信息或打印輸出的信息都是字符方式輸入輸出的,因此,計算機必須能表示字符(例如,C語言中可通過定義字符型變量來存儲字符)。字符包括:語言程序設計教程第一章預備知識C1.3機器數的表示形式及其表示范圍字符表示法
字母:A、B、…、Z,a、b、…、z;數字:0、1、…、9;專用字符:+、-、﹡、∕、↑、SP(space空格)、…
非打印字符:BEL(Bell響鈴)、LF(LineFeed換行)、CR(CarriageReturn回車)、…
這些字符在機器里必須用二進制數來表示。計算機中常采用美國信息交換標準代碼ASCII(AmericanStandardCodeforInformationInterchange)來表示。這種代碼用一個字節(jié)(8位二進制碼)來表示一個字符,其中低7位為字符的ASCII值,最高位一般用作校驗位。在附錄5中給出了常用字符的ASCII值。語言程序設計教程第一章預備知識C1.3二進制數的位運算邏輯變量
其值只能有0或1兩種取值的變量“與”運算(AND)
“與”運算又稱為邏輯乘,可用符號“·”或“∧”來表示,C語言中用“&”來表示。如有A、B兩個邏輯變量,可能有的取值情況只有4種。位運算主要包括:與(AND)、或(OR)、非(NOT)、異或(XOR)ABA&B000010100111結論:即只有A、B兩個變量取值均為1,則它們“與”運算的結果才為1,其它均為0。
語言程序設計教程第一章預備知識C1.3二進制數的位運算“或”運算(OR)
“或”運算又稱為邏輯加,可用符號“+”或“∨”來表示,C語言中用“|”來表示。如有A、B兩個邏輯變量,可能有的取值情況只有4種。ABA&B000011101111結論:即A、B變量中只要一個變量取值為1,則它們“或”運算的結果就是1。
語言程序設計教程第一章預備知識C1.3二進制數的位運算“非”運算(NOT)
“非”運算又稱為邏輯反,C語言中用“~”來表示。A~A0110結論:即將A的值求反。
語言程序設計教程第一章預備知識C1.3二進制數的位運算“異或”運算(XOR)
“異或”運算可用符號“⊕
”來表示,C語言中用“^”來表示。如有A、B兩個邏輯變量,可能有的取值情況只有4種。ABA^B000011101110結論:即當兩個變量的取值相異時,則它們“異或”運算的結果就是1,相同則
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 外貿大合同協議書
- 外包工合同協議
- 三者險合同范本
- 樹苗訂購合同范本
- 墨盒銷售合同范本
- 查監(jiān)控保密協議書
- 商業(yè)并購合同范本
- 校服采購合同范本
- 取水證合同范本
- 下撥設備協議書
- 《企業(yè)估值方法》課件
- 皮影藝術資源引入初中美術教學的應用研究
- 貴州省生態(tài)文明教育讀本(高年級) -教案(教學設計)
- 《財務會計-學習指導習題與實訓》全書參考答案
- 2021大慶讓胡路萬達廣場商業(yè)購物中心開業(yè)活動策劃方案預算-67P
- 2022年福建翔安區(qū)社區(qū)專職工作者招聘考試真題
- 2023年考研考博-考博英語-湖南師范大學考試歷年真題摘選含答案解析
- 英語電影的藝術與科學智慧樹知到答案章節(jié)測試2023年中國海洋大學
- 2023-2024學年新疆維吾爾自治區(qū)烏魯木齊市小學數學六年級上冊期末??紲y試題
- GB/T 15814.1-1995煙花爆竹藥劑成分定性測定
- GB/T 11446.7-2013電子級水中痕量陰離子的離子色譜測試方法
評論
0/150
提交評論