C語言程序設(shè)計(jì)(收藏)_第1頁
C語言程序設(shè)計(jì)(收藏)_第2頁
C語言程序設(shè)計(jì)(收藏)_第3頁
C語言程序設(shè)計(jì)(收藏)_第4頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、C語言程序設(shè)計(jì) 2020-12-242 教材:C語言程序設(shè)計(jì)(C99版) 陳良銀 游洪躍 李旭偉 主編 李志蜀 唐寧九 李 濤 主審 2006年9月出版 2020-12-243 本書內(nèi)容 第1章 基礎(chǔ)知識(shí) 第2章 C語言的基本要素 第3章 變量名、數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 第4章 C程序基本控制結(jié)構(gòu) 第5章 函數(shù) 第6章 數(shù)組和指針 第7章 遞歸 第8章 結(jié)構(gòu)、聯(lián)合、位運(yùn)算和枚舉類型 第9章 預(yù)處理命令 第10章 文件 第11章 高級(jí)話題 第12章 C89 Vs C99 實(shí)驗(yàn) (待安排) 2020-12-244 數(shù)據(jù)在計(jì)算機(jī)內(nèi)的表示數(shù)據(jù)在計(jì)算機(jī)內(nèi)的表示 本章主要內(nèi)容 ARM Vector Ta

2、ble FIQ IRQ (Reserved) Data Abort Prefetch Abort Software Interrupt Undefined Instruction Reset 0 x1C 0 x18 0 x14 0 x10 0 x0C 0 x08 0 x04 0 x00 計(jì)算機(jī)語言計(jì)算機(jī)語言 計(jì)算機(jī)系統(tǒng)及基本工作原理計(jì)算機(jī)系統(tǒng)及基本工作原理 算法和數(shù)據(jù)結(jié)構(gòu)算法和數(shù)據(jù)結(jié)構(gòu) C語言標(biāo)準(zhǔn)語言標(biāo)準(zhǔn) 編程風(fēng)格介紹編程風(fēng)格介紹 2020-12-245 本章的節(jié)本要求 了解計(jì)算機(jī)的基本組成結(jié)構(gòu)及其基本工作原理 熟悉內(nèi)存組織結(jié)構(gòu)、內(nèi)存地址概念 熟悉數(shù)據(jù)在存儲(chǔ)器中的布局結(jié)構(gòu) 深入理解計(jì)算機(jī)基本工

3、作原理、內(nèi)存地址概念、C程序數(shù)據(jù)分區(qū)等基本內(nèi)容 方法從總體結(jié)構(gòu)入手、深入結(jié)構(gòu)細(xì)節(jié) 2020-12-246 1.1 計(jì)算機(jī)系統(tǒng) 計(jì)算機(jī)系統(tǒng)包含了硬件系統(tǒng)和軟件系統(tǒng)兩大部分。 計(jì)算機(jī)硬件系統(tǒng)主要由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備五大部件組成。 計(jì)算機(jī)軟件系統(tǒng)又分為系統(tǒng)軟件和應(yīng)用軟件兩大部分。 2020-12-247 圖1.1 計(jì)算機(jī)系統(tǒng)基本組成 計(jì) 算 機(jī) 系計(jì) 算 機(jī) 系 統(tǒng)統(tǒng) 硬件系統(tǒng)硬件系統(tǒng)軟件系統(tǒng)軟件系統(tǒng) 主主 機(jī)機(jī) 外部設(shè)備外部設(shè)備 系統(tǒng)軟件系統(tǒng)軟件應(yīng)用軟件應(yīng)用軟件 中央處理器中央處理器 內(nèi)存儲(chǔ)器內(nèi)存儲(chǔ)器 輸入設(shè)備輸入設(shè)備 輸出設(shè)備輸出設(shè)備 外存儲(chǔ)器外存儲(chǔ)器 文字處理軟件文字處

4、理軟件 表格處理軟件表格處理軟件 輔助設(shè)計(jì)軟件輔助設(shè)計(jì)軟件 實(shí)時(shí)控制軟件實(shí)時(shí)控制軟件 操作系統(tǒng)操作系統(tǒng) 語言處理系統(tǒng)語言處理系統(tǒng) 系統(tǒng)服務(wù)程序系統(tǒng)服務(wù)程序 數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng) 運(yùn)算器運(yùn)算器 控制器控制器 只讀存儲(chǔ)器只讀存儲(chǔ)器 隨機(jī)存儲(chǔ)器隨機(jī)存儲(chǔ)器 編譯程序編譯程序 解釋程序解釋程序 匯編程序匯編程序 連接編輯程序連接編輯程序 連接裝配程序連接裝配程序 調(diào)試程序調(diào)試程序 其他服務(wù)程序其他服務(wù)程序 2020-12-248 1.1.1 計(jì)算機(jī)的硬件系統(tǒng) 硬件( Hardware)是計(jì)算機(jī)的物理實(shí)體部分 。 計(jì)算機(jī)處理信息的過程有點(diǎn)類似人的大腦處理信息的過程。 計(jì)算機(jī)五大部件之間是否也可以通

5、過什么“線”來相互傳遞信號(hào)啦? 地址線( 傳遞地址信號(hào))、數(shù)據(jù)線( 傳遞數(shù)據(jù)信號(hào))和控制線( 傳遞控制信號(hào)) 。 2020-12-249 把計(jì)算機(jī)系統(tǒng)的所有地址線統(tǒng)稱為地址總線,所有數(shù)據(jù)線統(tǒng)稱為數(shù)據(jù)總線,所有控制線統(tǒng)稱為控制總 線。 而地址總線、數(shù)據(jù)總線和控制總線合在一起統(tǒng)稱為計(jì)算機(jī)系統(tǒng)總線。 計(jì)算機(jī)五大部件之間正是通過這些總線( 地址總線、數(shù)據(jù)總線和控制總線)相互連接、相互聯(lián)系的。 2020-12-2410 系 統(tǒng) 總系 統(tǒng) 總 線線 存儲(chǔ)器存儲(chǔ)器 運(yùn)算器運(yùn)算器 控制器控制器 適配器適配器 輸入設(shè)備輸入設(shè)備輸出設(shè)備輸出設(shè)備 CPU 主機(jī)主機(jī) 2020-12-2411 為什么計(jì)算機(jī)需要以上三種

6、總線啦?這必須嗎? 輸入設(shè)備輸入設(shè)備將信息從外界輸入到計(jì)算機(jī)中 。 控制器控制器實(shí)際上就是計(jì)算機(jī)的指揮中心 。 運(yùn)算器運(yùn)算器的主要工作就是完成算術(shù)、邏輯運(yùn)算 。 存儲(chǔ)器存儲(chǔ)器是計(jì)算機(jī)的記憶裝置 。 輸出設(shè)備輸出設(shè)備是計(jì)算機(jī)的一個(gè)執(zhí)行裝置 。 2020-12-2412 計(jì)算機(jī)如何進(jìn)行3+2這樣的簡單操作? 控制信號(hào)就是通過控制總線傳遞的。 數(shù)據(jù)信號(hào)通過數(shù)據(jù)總線進(jìn)行傳遞。 那么計(jì)算機(jī)為何需要地址信號(hào)?地址信號(hào)起什么作用啦? 沒有地址信號(hào)線,計(jì)算機(jī)就不可能準(zhǔn)確找到某一個(gè)內(nèi)存單元。 2020-12-2413 為了區(qū)分不同的存儲(chǔ)單元,每個(gè)存儲(chǔ)單元都有一個(gè)獨(dú)一無二的編號(hào),這個(gè)編號(hào)實(shí)際上就是該存儲(chǔ)單元 的地

7、址。 計(jì)算機(jī)的內(nèi)存空間主要分為三個(gè)區(qū):系統(tǒng)程序區(qū)、應(yīng)用程序區(qū)和數(shù)據(jù)區(qū),其中數(shù)據(jù)區(qū)又分為系統(tǒng)程序 數(shù)據(jù)區(qū)和應(yīng)用程序數(shù)據(jù)區(qū)兩類。 2020-12-2414 圖1.3 C語言變量的存儲(chǔ)類型與硬件的關(guān)系 運(yùn)算器運(yùn)算器 控制器控制器 寄存器寄存器 register型變量型變量 系統(tǒng)程序區(qū)系統(tǒng)程序區(qū) 應(yīng)用程序區(qū)應(yīng)用程序區(qū) 靜態(tài)數(shù)據(jù)區(qū)靜態(tài)數(shù)據(jù)區(qū)static型型 堆棧區(qū)堆棧區(qū)auto 堆區(qū)堆區(qū) CPU存儲(chǔ)器存儲(chǔ)器 三總線三總線 2020-12-2415 在一個(gè)通用計(jì)算機(jī)系統(tǒng)中,以上三種總線缺一不可。 把計(jì)算機(jī)的內(nèi)存儲(chǔ)器的每一個(gè)存儲(chǔ)單元從上向下依次疊放起來。把存儲(chǔ)器的存儲(chǔ)單元按照編號(hào)順序排 成一豎排。 2020

8、-12-2416 0 x200000050 x20000005 0 x200000040 x20000004 0 x200000030 x20000003 0 x200000020 x20000002 0 x200000010 x20000001 0 x200000000 x20000000 0 x000000000 x00000000 0 xFFFFFFFF0 xFFFFFFFF 0 x180 x18 0 x100000030 x10000003 0 x100000020 x10000002 0 x100000010 x10000001 0 x100000000 x10000000 圖1.4

9、 存儲(chǔ)器的抽象結(jié)構(gòu) 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 2020-12-2417 什么是“位”呀? 其實(shí)位是計(jì)算機(jī)信息表示的最小單位。計(jì)算機(jī)是通過存儲(chǔ)0和1的不同編碼組合來表示信息的。 0和1的不同組合就是編碼。 由于每一位要么存放0、要么存放1,只有這兩種選擇,一共有8次選擇的可能,所以總共有256種 不同的組合,也就是說0 x20000000存儲(chǔ)單元就可以表示256種不同的信息。 只有只有0 0和和1 1 2020-12-2418 8位這其實(shí)就是“字節(jié)”的概念,計(jì)算機(jī)里的字節(jié)固定就是8位,一個(gè)字節(jié)占據(jù)一個(gè)存儲(chǔ)單元。 絕大部分計(jì)算機(jī)的地址編碼也是按照字節(jié)來進(jìn)行編號(hào)

10、的,也就是說一個(gè)地址編碼對(duì)應(yīng)了一個(gè)字節(jié)存儲(chǔ) 空間( 8位)。 存儲(chǔ)單元的編號(hào)也就是地址編號(hào)(即地址編碼)。 1 1字節(jié)字節(jié)8 8位位 2020-12-2419 計(jì)算機(jī)系統(tǒng)地址位數(shù)決定了其存儲(chǔ)空間的大小。 地址系統(tǒng)只有20位,則內(nèi)存單元只有1M字節(jié) 。 地址系統(tǒng)有32位,則內(nèi)存單元只有4G字節(jié) 。 地址總線位數(shù)決定地址總線位數(shù)決定 地址編碼范圍。地址編碼范圍。 2020-12-2420 計(jì)算機(jī)系統(tǒng)的地址位數(shù)與C程序的指針長度密切相關(guān)。 指針變量的意思很簡單就是一個(gè)用來存放編號(hào)( 也就是內(nèi)存地址即指針值)的變量,也就是說用來 存放地址編號(hào)的變量叫指針變量。 指針變量(指針變量就是用來存放地址的變量

11、)所占用的存儲(chǔ)空間大小就是地址編號(hào)的位數(shù) 。 地址總線位數(shù)決定地址總線位數(shù)決定 地址指針變量長度地址指針變量長度 2020-12-2421 1.1.2 計(jì)算機(jī)的軟件系統(tǒng) 軟件( Software)是計(jì)算機(jī)實(shí)現(xiàn)各種功能的程序、文檔和數(shù)據(jù)的集合。 系統(tǒng)軟件包括操作系統(tǒng)和各種語言處理軟件等 。 應(yīng)用軟件主要包括各個(gè)行業(yè)或者領(lǐng)域的功能處理軟件。 2020-12-2422 圖1.5 計(jì)算機(jī)軟件系統(tǒng) 各種語言處理軟件各種語言處理軟件 操作系統(tǒng)操作系統(tǒng) 硬件硬件 應(yīng)用軟件應(yīng)用軟件 系統(tǒng)軟件系統(tǒng)軟件 2020-12-2423 1.2 計(jì)算機(jī)的基本工作原理 馮諾依曼(Neumann)定義了現(xiàn)代計(jì)算機(jī)的基本結(jié)構(gòu),

12、其特點(diǎn)是: 硬件系統(tǒng)由五大部件組成,各部件具有獨(dú)立的基本功能。 采用二進(jìn)制形式表示數(shù)據(jù)和指令。二進(jìn)制用來表示信息的基本符號(hào)只有兩個(gè):0和1。 2020-12-2424 存儲(chǔ)程序的基本原理 計(jì)算機(jī)在執(zhí)行程序和處理數(shù)據(jù)時(shí)必須首先將程序和數(shù)據(jù)存儲(chǔ)在主存儲(chǔ)器中,計(jì)算機(jī)工作時(shí)自動(dòng)高速地 從主存儲(chǔ)器中取出指令并加以分析、執(zhí)行。 存儲(chǔ)程序、自動(dòng)執(zhí)行存儲(chǔ)程序、自動(dòng)執(zhí)行 2020-12-2425 圖 1.6 圖靈機(jī)的基本組成結(jié)構(gòu) 讀寫頭讀寫頭 存儲(chǔ)帶存儲(chǔ)帶 2020-12-2426 0 x340 x34 0 x120 x120 x200000050 x20000005 0 x200000040 x2000000

13、4 0 x200000030 x20000003 0 x200000020 x20000002 0 x200000010 x20000001 0 x200000000 x20000000 0 x000000000 x00000000 0 xFFFFFFFF0 xFFFFFFFF 0 x100000030 x10000003 0 x100000020 x10000002 0 x100000010 x10000001 0 x100000000 x10000000 圖圖1.7 1.7 讀寫頭的移動(dòng)讀寫頭的移動(dòng) 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 讀寫頭讀寫頭 地址編號(hào)地址

14、編號(hào) 存儲(chǔ)單元存儲(chǔ)單元 存儲(chǔ)內(nèi)容存儲(chǔ)內(nèi)容 2020-12-2427 根據(jù)存儲(chǔ)程序的基本原理,計(jì)算機(jī)執(zhí)行的指令需要預(yù)先存放在計(jì)算機(jī)的存儲(chǔ)器中,也就是內(nèi)存儲(chǔ)器中。 計(jì)算機(jī)程序的指令系列按照地址順序依次存放在這些存儲(chǔ)單元中。 地址也就是計(jì)算機(jī)存儲(chǔ)單元的編號(hào)。 存儲(chǔ)器的每個(gè)地址對(duì)應(yīng)了一個(gè)唯一的存儲(chǔ)單元,反過來,每個(gè)存儲(chǔ)單元都對(duì)應(yīng)了一個(gè)唯一的地址。 2020-12-2428 計(jì)算機(jī)工作的過程就是不斷地從這些存儲(chǔ)單元取出指令、分析指令并執(zhí)行指令的過程。 計(jì)算機(jī)究竟應(yīng)該從哪一個(gè)存儲(chǔ)單元取指令則完全依賴于計(jì)算機(jī)CPU內(nèi)的程序計(jì)數(shù)器值,程序計(jì)數(shù)器是 CPU內(nèi)的一個(gè)特殊計(jì)數(shù)器,其中存放的就是將要取出的下一條指令的

15、存儲(chǔ)單元地址。 表示了讀寫頭的位置表示了讀寫頭的位置 2020-12-2429 程序?qū)δ骋粋€(gè)變量的操作實(shí)際上就是對(duì)這個(gè)變量所在的存儲(chǔ)單元的操作。 C程序中的地址概念實(shí)際就是變量所在的存儲(chǔ)單元的地址編號(hào)。 不同的變量可能占據(jù)不同個(gè)數(shù)的存儲(chǔ)單元,存放變量的第一個(gè)存儲(chǔ)單元的地址就是該變量的地址。 變量的地址等于變量的地址等于“首地址首地址” 2020-12-2430 1.2.3 C程序的內(nèi)存分區(qū) 計(jì)算機(jī)的存儲(chǔ)器是分段組織的 。 分成程序段( 程序區(qū))和數(shù)據(jù)段( 數(shù)據(jù)區(qū)) 。 數(shù)據(jù)存儲(chǔ)區(qū)分為了靜態(tài)數(shù)據(jù)存儲(chǔ)區(qū)和動(dòng)態(tài)數(shù)據(jù)存儲(chǔ)區(qū)兩個(gè)部分,分別簡稱靜態(tài)存儲(chǔ)區(qū)和動(dòng)態(tài)存儲(chǔ)區(qū)。 動(dòng)態(tài)存儲(chǔ)區(qū)又分為“堆”和“堆?!眱煞N

16、結(jié)構(gòu)形式。 2020-12-2431 “堆棧”空間大小有限,采用“先進(jìn)后出”的方式管理其數(shù)據(jù),而且C編譯器或操作系統(tǒng)自動(dòng)管理該 部分空間,且其大小有限; 而“堆”空間則可以很大,它的組織方式比較靈活,需要程序員自己管理。 堆棧的效率比堆的效率明顯高很多 。 2020-12-2432 C編譯器將計(jì)算機(jī)內(nèi)存分配方式分為以下三種: 1. 在靜態(tài)存儲(chǔ)區(qū)中分配外部變量、static變量 。 2. 在動(dòng)態(tài)存儲(chǔ)區(qū)的“堆?!鄙戏峙洹?3. 在動(dòng)態(tài)存儲(chǔ)區(qū)的“堆”上分配,亦稱動(dòng)態(tài)內(nèi)存分配。程序員用malloc( )函數(shù)申請(qǐng)堆內(nèi)存,用free( )函 數(shù)釋放堆內(nèi)存。 2020-12-2433 0 x20000005

17、0 x20000005 0 x200000040 x20000004 0 x200000030 x20000003 0 x200000020 x20000002 0 x200000010 x20000001 0 x200000000 x20000000 0 x000000000 x00000000 0 xFFFFFFFF0 xFFFFFFFF 0 x100000030 x10000003 0 x100000020 x10000002 0 x100000010 x10000001 0 x100000000 x10000000 圖1.9 內(nèi)存分區(qū) 1 0 1 0 1 0 1 0讀寫頭讀寫頭 0 x

18、400000050 x40000005 0 x400000040 x40000004 0 x400000030 x40000003 0 x400000020 x40000002 0 x400000010 x40000001 0 x400000000 x400000001 0 1 0 1 0 1 0 0 x3000FFFF0 x3000FFFF 0 x3000FFFE0 x3000FFFE 0 x3000FFFD0 x3000FFFD 0 x3000FFFC0 x3000FFFC 0 x3000FFFB0 x3000FFFB1 0 1 0 1 0 1 0 靜靜 態(tài)態(tài) 數(shù)數(shù) 據(jù)據(jù) 區(qū)區(qū) 堆堆 棧棧

19、 區(qū)區(qū) 堆堆 區(qū)區(qū) 程程 序序 區(qū)區(qū) 數(shù)數(shù) 據(jù)據(jù) 區(qū)區(qū) 2020-12-2434 圖1.8 內(nèi)存數(shù)據(jù)區(qū)分區(qū) 靜態(tài)存儲(chǔ)區(qū)靜態(tài)存儲(chǔ)區(qū) 堆棧區(qū)堆棧區(qū)堆區(qū)堆區(qū) 永 永 久久 生生 命命 周周 期期 局 局 部部 生生 命命 周周 期期 用戶自己管理其生命周期 用戶自己管理其生命周期 2020-12-2435 1.3 計(jì)算機(jī)語言 計(jì)算機(jī)語言分為三類:機(jī)器語言、匯編語言和高級(jí)語言。 機(jī)器語言是計(jì)算機(jī)能夠直接識(shí)別和處理的二進(jìn)制機(jī)器指令;“01010101” 。 匯編語言是符號(hào)化了的機(jī)器語言,也就是用一些符號(hào)來表示二進(jìn)制機(jī)器語言;“MOV AX,BX;” 。 而高級(jí)語言則是更符合人類思維特性的抽象語言。 “y

20、 = x*x;”。 2020-12-2436 1.4 數(shù)據(jù)在計(jì)算機(jī)內(nèi)的表示 在計(jì)算機(jī)中,用0和1的不同組合來表示不同的信息。 00001001”究竟是表示1、2或者3啦?為什么它就表示的這個(gè)數(shù)啦?這涉及到進(jìn)位計(jì)數(shù)制和編碼的問題。 進(jìn)位計(jì)數(shù)制就是用一組特定的數(shù)字符號(hào)按照一定的進(jìn)位規(guī)則來表示數(shù)的計(jì)數(shù)方法。 2020-12-2437 十進(jìn)制則采用了“0”、“1”.“9”這10個(gè)符號(hào)。 十六進(jìn)制就有16個(gè)基本符號(hào)“0”、“1”.“9”、“A”、“B”、“C”、“D”、“E”、“F”。 八進(jìn)制表示,有8個(gè)基本符號(hào),分別是“0”、“1”.“7”。 涉及“基”和“位權(quán)”的概念。 2020-12-2438 在

21、C語言中,十六進(jìn)制表示以0 x開頭,八進(jìn)制以0開頭,十進(jìn)制以非0數(shù)字開頭。 比如: 0 x1777 (十六進(jìn)制表示)、 01777 (八進(jìn)制表示)、 1777 (十進(jìn)制表示)。 2020-12-2439 所謂“基”,就是在一種進(jìn)位計(jì)數(shù)制中所使用的基本符號(hào)的個(gè)數(shù)。 比如: 0 x88 ( 正確的十六進(jìn)制表示)、 088 ( 錯(cuò)誤的八進(jìn)制表示)、 8FF ( 錯(cuò)誤的十進(jìn)制表示)。 2020-12-2440 “位權(quán)”實(shí)際上就是在某種進(jìn)制的編碼中,某一個(gè)位置的基本符號(hào)為1時(shí),它所代表的數(shù)值的大小。 8648.72D = 8103+6102+4101+8100 +710-1+210-2 在這個(gè)數(shù)中,從左

22、至右的各位數(shù)字由于所處位置不同,它們所代表的數(shù)值的大小也不相同 2020-12-2441 在C語言以外的場合,通??梢杂孟聵?biāo)2、8、10、16或字母B、O、D、H分別表示二進(jìn)制、八進(jìn)制、十 進(jìn)制、十六進(jìn)制數(shù), 如 (11001)B、(354)O、(1224)D、(4DE)H及(10101)2、(102)8、(790)10、(B5B. CD)16等。 為便于區(qū)分一般用為便于區(qū)分一般用Q Q表示表示 2020-12-2442 十進(jìn)制十進(jìn)制二進(jìn)制二進(jìn)制 八進(jìn)制八進(jìn)制 八進(jìn)制轉(zhuǎn)換為二進(jìn)制碼八進(jìn)制轉(zhuǎn)換為二進(jìn)制碼 十六進(jìn)制十六進(jìn)制 十六進(jìn)制轉(zhuǎn)換為二進(jìn)十六進(jìn)制轉(zhuǎn)換為二進(jìn) 制碼制碼 0 0000000000

23、00000000 000000000 1 1000100011 10010011 100010001 2 2001000102 20100102 200100010 3 3001100113 30110113 300110011 4 4010001004 41001004 401000100 5 5010101015 51011015 501010101 6 6011001106 61101106 601100110 7 7011101117 71111117 701110111 8 81000100010100010000010008 810001000 9 9100110011111001

24、0010010019 910011001 1010101010101212001010001010A A10101010 1111101110111313001011001011B B10111011 1212110011001414001100001100C C11001100 1313110111011515001101001101D D11011101 1414111011101616001110001110E E11101110 1515111111111717001111001111F F11111111 161610000100002020010000010000101000010

25、00000010000 17171000110001212101000101000111110001000100010001 2020-12-2443 不同進(jìn)位計(jì)數(shù)制之間的轉(zhuǎn)換 R進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù) 1001.11 = 23 + 20 + 2-1 + 2-2 = 9.75 0227 = 282 + 281 + 780 = 151 0 x3AB = 3162 + A161 + Bl60 = 3162 + 10161 + 11160 = 939 2020-12-2444 十進(jìn)制數(shù)轉(zhuǎn)換為R進(jìn)制數(shù) 125 = 1111101B,轉(zhuǎn)換過程如圖1.10所示: 125 = 0175,轉(zhuǎn)換過程如圖1.10所

26、示: 125 = 0 x7D,轉(zhuǎn)換過程如圖1.10所示: 2020-12-2445 圖1.10 十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)、八進(jìn)制數(shù)、十六進(jìn)制數(shù) 2 1252 125 2 622 621 1 2 312 31 0 0 2 152 15 1 1 2 72 7 1 1 2 32 3 1 1 2 12 1 1 1 0 0 1 1 余數(shù)余數(shù) 商商 高位高位 8 1258 125 8 158 15 5 5 8 18 17 7 0 0 1 1 余數(shù)余數(shù) 商商 高位高位 16 16 125125 16 716 7 D D 0 07 7 余余 商商高位高位 2020-12-2446 二進(jìn)制數(shù)與八進(jìn)制、十六進(jìn)制數(shù)之

27、間的轉(zhuǎn)換 分組:010 100 111 101 代值: 2 4 7 5 結(jié)果:10100111101B = 02475 ( 小數(shù)分組,不足三位,必須補(bǔ)0) 010 100 101 . 100 100 2 4 5 . 4 4 2020-12-2447 1100 0101 1010B = 0 x0C5A 111 1111.101B = 0 x7F.A 0 x0ABC = 1010 1011 1100 0 x0D65.4A =1101 0110 0101.0100101B 2020-12-2448 數(shù)值信息在計(jì)算機(jī)中的表示 數(shù)據(jù)分為數(shù)值型數(shù)據(jù)和非數(shù)值型數(shù)據(jù)兩大類 。 數(shù)值型數(shù)據(jù)是指能進(jìn)行算術(shù)運(yùn)算(

28、加、減、乘、除四則運(yùn)算)的數(shù)據(jù) 。 非數(shù)值數(shù)據(jù)是指文字、圖像等不能進(jìn)行算術(shù)運(yùn)算的數(shù)據(jù)。 如何表示啦?實(shí)際上就是根據(jù)一定的約定來表示,這種約定就是表示數(shù)值大小的編碼規(guī)則。 2020-12-2449 機(jī)器數(shù)本身所具有的實(shí)際數(shù)值稱為真值。 同一個(gè)機(jī)器數(shù)按照編碼約定的方式不同可能具有不同的真值。 大家一定要掌握某個(gè)數(shù)在計(jì)算機(jī)的機(jī)內(nèi)表示及其運(yùn)算規(guī)則。 相同的機(jī)器數(shù)、不同的真值相同的機(jī)器數(shù)、不同的真值 2020-12-2450 原碼 原碼就是在真值的基礎(chǔ)上加上符號(hào)位即可。 十進(jìn)制 二進(jìn)制真值 原碼 +94 +1011110 01011110 -49 -0110001 10110001 2020-12-24

29、51 反碼 對(duì)于正數(shù),其反碼與原碼形式相同;對(duì)于負(fù)數(shù),將原碼中符號(hào)位以外的各位數(shù)字取反即得補(bǔ)碼( 即 “0”變?yōu)椤?”,“1”變?yōu)椤?”)。例如: 十進(jìn)制 二進(jìn)制真值 原碼 反碼 +114 +1110010 01110010 01110010 89 1011001 11011001 10100110 2020-12-2452 補(bǔ)碼 對(duì)于正數(shù),其補(bǔ)碼與原碼形式相同;對(duì)于負(fù)數(shù),在反碼的基礎(chǔ)上,末位再加1就得到負(fù)數(shù)的補(bǔ)碼。例 如: 十進(jìn)制 二進(jìn)制真值 原碼 反碼補(bǔ)碼 +114 +1110010 01110010 01110 89 1011001 1101110100111 2020-12-2453

30、基本表示 數(shù)值數(shù)值3232位表示位表示1616位位8 8位位 -2-21111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 11101111 1111 1110 1111 1111 1111 1111 1111 1111 11101110 1111 11101111 1110 -10-101111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 01101111 1111 0110 1111 1111 1111 1111 1111 1111 01100110 1111

31、 01101111 0110 11110000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 10110000 1011 0000 0000 0000 0000 0000 0000 10111011 0000 10110000 1011 1281280000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 0000 00000001 0000 0000 0000 0001 0000 0000 0001 0000 00000000 超出表示范超出表示范 圍圍 2020-1

32、2-2454 定點(diǎn)數(shù)和浮點(diǎn)數(shù) 機(jī)器數(shù)又分為定點(diǎn)數(shù)和浮點(diǎn)數(shù)兩種 。 定點(diǎn)表示是將小數(shù)點(diǎn)位置約定在一個(gè)固定的位置上。通常有以下兩種約定:定點(diǎn)整數(shù)和定點(diǎn)小數(shù)。 浮點(diǎn)數(shù)的小數(shù)點(diǎn)位置是不固定的,可以浮動(dòng)。 2020-12-2455 圖1.11 定點(diǎn)整數(shù)和定點(diǎn)小數(shù)的表示 1 1 1 1 1 0 0 1 數(shù)符小數(shù)點(diǎn)位置 數(shù) 值 部 分 1 1 1 1 1 0 0 1 數(shù)符 小數(shù)點(diǎn)位置 數(shù) 值 部 分 a. 定點(diǎn)小數(shù)表示b. 定點(diǎn)整數(shù)表示 2020-12-2456 不同類型的數(shù)在計(jì)算機(jī)中所占的字節(jié)數(shù) 變量的數(shù)據(jù)類型就決定了變量在內(nèi)存單元中所占據(jù)的字節(jié)數(shù),也決定了其取值范圍。 folat( 浮點(diǎn)型) 4個(gè)字節(jié)

33、double( 雙精度浮點(diǎn)型) 8個(gè)字節(jié) char( 字符型) 1個(gè)字節(jié) short( 短整型) 2個(gè)字節(jié) long( 長整型) 4個(gè)字節(jié) int( 整型) 可能2字節(jié),也可能4字節(jié)( 隨環(huán)境而不同)。 決定長度決定長度 2020-12-2457 二進(jìn)制算術(shù)運(yùn)算和邏輯運(yùn)算 算術(shù)運(yùn)算即加(+)、減(-)、乘(*)、除(/)、取余(%)五種運(yùn)算。 1 1 0 1 1 0 ( 被加數(shù)) 1 0 1 1 1 0 ( 加 數(shù)) +) 1 1 1 1 1 ( 進(jìn) 位) 1 1 0 0 1 0 0 ( 和 數(shù)) 2020-12-2458 與運(yùn)算 A AB BC C 0 00 00 0 0 01 10 0 1

34、 10 00 0 1 11 11 1 2020-12-2459 或運(yùn)算 A AB BC C 0 00 00 0 0 01 10 0 1 10 00 0 1 11 11 1 2020-12-2460 非運(yùn)算 A AC C 0 01 1 1 10 0 2020-12-2461 異或運(yùn)算 A AB BC C 0 00 00 0 0 01 11 1 1 10 01 1 1 11 10 0 2020-12-2462 位運(yùn)算 C C語言的語言的 邏輯邏輯 運(yùn)算運(yùn)算 C C語言的位運(yùn)算語言的位運(yùn)算 操作數(shù)操作數(shù)1 1 0000 0001(0000 0001(非非0=0= 真真) ) 0 00 00 00 0

35、0 00 00 01 1 操作數(shù)操作數(shù)2 2 0000 0010( 0000 0010( 非非 0=0=真真) ) 0 00 00 00 00 00 01 10 0 結(jié)果結(jié)果結(jié)果為真結(jié)果為真1 10 00 00 00 00 00 00 00 0 最后結(jié)果為最后結(jié)果為0 0 2020-12-2463 ASCII碼 ASCII碼是美國國家標(biāo)準(zhǔn)信息交換碼( American national Standard Code for Information Interchange)的簡 稱,是目前國際上使用最廣泛的計(jì)算機(jī)字符編碼。 ASCII碼的編碼規(guī)則為:每個(gè)字符用7位二進(jìn)制數(shù)( b6b5b4b3b2b

36、lb0)來表示( 如表1.9所示),7位二進(jìn)制共 有128種狀態(tài)( 27=128),可表示128個(gè)字符,7位二進(jìn)制編碼的取值范圍為。 2020-12-2464 b b6 6b b5 5b b 4 4 b b3 3b b2 2b b1 1b b0 0 000000001001010010011011100100101101110110111111 00000000NULNULDLEDLESPSP0 0 P P p p 00010001SOHSOHDC1DC1! !1 1A AQ Qa aq q 00100010STXSTXDC2DC2 2 2B BR Rb br r 00110011ETXETXDC3DC3# #3 3C CS Sc cs s 01000100EOTEOTDC4DC4$ $4 4D DT Td dt t 01010101ENQENQNAKNAK% %5 5E EU Ue eu u 01100110ACKACKSYNSYN& &6 6F FV Vf fv v 01110111BELBELETBETB 7 7G GW

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論