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

下載本文檔

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

文檔簡(jiǎn)介

個(gè)人主頁(yè):***C語(yǔ)言程序設(shè)計(jì)(C99版)四川大學(xué)計(jì)算機(jī)學(xué)院四川大學(xué)計(jì)算機(jī)學(xué)院2022/1/181C語(yǔ)言程序設(shè)計(jì)(C版)教材:《C語(yǔ)言程序設(shè)計(jì)(C99版)》陳良銀游洪躍李旭偉主編李志蜀唐寧九李濤主審清華大學(xué)出版社2006年9月出版2022/1/182C語(yǔ)言程序設(shè)計(jì)(C版)本書(shū)內(nèi)容

第1章基礎(chǔ)知識(shí)第2章C語(yǔ)言的基本要素第3章變量名、數(shù)據(jù)類(lèi)型、運(yùn)算符和表達(dá)式第4章C程序基本控制結(jié)構(gòu)第5章函數(shù)第6章數(shù)組和指針第7章遞歸第8章結(jié)構(gòu)、聯(lián)合、位運(yùn)算和枚舉類(lèi)型第9章預(yù)處理命令第10章文件第11章高級(jí)話題第12章C89VsC99實(shí)驗(yàn)(待安排)2022/1/183C語(yǔ)言程序設(shè)計(jì)(C版)數(shù)據(jù)在計(jì)算機(jī)內(nèi)的表示本章主要內(nèi)容ARMVectorTableFIQIRQ(Reserved)DataAbortPrefetchAbortSoftwareInterruptUndefinedInstructionReset0x1C0x180x140x100x0C0x080x040x00132計(jì)算機(jī)語(yǔ)言計(jì)算機(jī)系統(tǒng)及基本工作原理4算法和數(shù)據(jù)結(jié)構(gòu)5C語(yǔ)言標(biāo)準(zhǔn)6編程風(fēng)格介紹2022/1/184C語(yǔ)言程序設(shè)計(jì)(C版)本章的節(jié)本要求了解計(jì)算機(jī)的基本組成結(jié)構(gòu)及其基本工作原理熟悉內(nèi)存組織結(jié)構(gòu)、內(nèi)存地址概念熟悉數(shù)據(jù)在存儲(chǔ)器中的布局結(jié)構(gòu)深入理解計(jì)算機(jī)基本工作原理、內(nèi)存地址概念、C程序數(shù)據(jù)分區(qū)等基本內(nèi)容方法——從總體結(jié)構(gòu)入手、深入結(jié)構(gòu)細(xì)節(jié)2022/1/185C語(yǔ)言程序設(shè)計(jì)(C版)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)用軟件兩大部分。2022/1/186C語(yǔ)言程序設(shè)計(jì)(C版)圖1.1計(jì)算機(jī)系統(tǒng)基本組成計(jì)算機(jī)系統(tǒng)硬件系統(tǒng)軟件系統(tǒng)

主機(jī)外部設(shè)備系統(tǒng)軟件應(yīng)用軟件中央處理器內(nèi)存儲(chǔ)器輸入設(shè)備輸出設(shè)備外存儲(chǔ)器文字處理軟件表格處理軟件輔助設(shè)計(jì)軟件實(shí)時(shí)控制軟件操作系統(tǒng)語(yǔ)言處理系統(tǒng)系統(tǒng)服務(wù)程序數(shù)據(jù)庫(kù)管理系統(tǒng)運(yùn)算器控制器只讀存儲(chǔ)器隨機(jī)存儲(chǔ)器編譯程序解釋程序匯編程序連接編輯程序連接裝配程序調(diào)試程序其他服務(wù)程序2022/1/187C語(yǔ)言程序設(shè)計(jì)(C版)1.1.1計(jì)算機(jī)的硬件系統(tǒng)硬件(Hardware)——是計(jì)算機(jī)的物理實(shí)體部分。計(jì)算機(jī)處理信息的過(guò)程有點(diǎn)類(lèi)似人的大腦處理信息的過(guò)程。計(jì)算機(jī)五大部件之間是否也可以通過(guò)什么“線”來(lái)相互傳遞信號(hào)啦?地址線(傳遞地址信號(hào))、數(shù)據(jù)線(傳遞數(shù)據(jù)信號(hào))和控制線(傳遞控制信號(hào))。2022/1/188C語(yǔ)言程序設(shè)計(jì)(C版)把計(jì)算機(jī)系統(tǒng)的所有地址線統(tǒng)稱(chēng)為地址總線,所有數(shù)據(jù)線統(tǒng)稱(chēng)為數(shù)據(jù)總線,所有控制線統(tǒng)稱(chēng)為控制總線。而地址總線、數(shù)據(jù)總線和控制總線合在一起統(tǒng)稱(chēng)為計(jì)算機(jī)系統(tǒng)總線。計(jì)算機(jī)五大部件之間正是通過(guò)這些總線(地址總線、數(shù)據(jù)總線和控制總線)相互連接、相互聯(lián)系的。2022/1/189C語(yǔ)言程序設(shè)計(jì)(C版)系統(tǒng)總線存儲(chǔ)器運(yùn)算器控制器適配器輸入設(shè)備輸出設(shè)備CPU主機(jī)2022/1/1810C語(yǔ)言程序設(shè)計(jì)(C版)為什么計(jì)算機(jī)需要以上三種總線啦?這必須嗎?輸入設(shè)備——輸入設(shè)備將信息從外界輸入到計(jì)算機(jī)中??刂破鳌刂破鲗?shí)際上就是計(jì)算機(jī)的指揮中心。運(yùn)算器——運(yùn)算器的主要工作就是完成算術(shù)、邏輯運(yùn)算。存儲(chǔ)器——存儲(chǔ)器是計(jì)算機(jī)的記憶裝置。輸出設(shè)備——輸出設(shè)備是計(jì)算機(jī)的一個(gè)執(zhí)行裝置。2022/1/1811C語(yǔ)言程序設(shè)計(jì)(C版)計(jì)算機(jī)如何進(jìn)行3+2這樣的簡(jiǎn)單操作?控制信號(hào)就是通過(guò)控制總線傳遞的。數(shù)據(jù)信號(hào)通過(guò)數(shù)據(jù)總線進(jìn)行傳遞。那么計(jì)算機(jī)為何需要地址信號(hào)?地址信號(hào)起什么作用啦?沒(méi)有地址信號(hào)線,計(jì)算機(jī)就不可能準(zhǔn)確找到某一個(gè)內(nèi)存單元。2022/1/1812C語(yǔ)言程序設(shè)計(jì)(C版)為了區(qū)分不同的存儲(chǔ)單元,每個(gè)存儲(chǔ)單元都有一個(gè)獨(dú)一無(wú)二的編號(hào),這個(gè)編號(hào)實(shí)際上就是該存儲(chǔ)單元的地址。計(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ū)兩類(lèi)。2022/1/1813C語(yǔ)言程序設(shè)計(jì)(C版)圖1.3C語(yǔ)言變量的存儲(chǔ)類(lèi)型與硬件的關(guān)系運(yùn)算器控制器寄存器register型變量系統(tǒng)程序區(qū)應(yīng)用程序區(qū)靜態(tài)數(shù)據(jù)區(qū)static型堆棧區(qū)auto堆區(qū)CPU存儲(chǔ)器

三總線2022/1/1814C語(yǔ)言程序設(shè)計(jì)(C版)在一個(gè)通用計(jì)算機(jī)系統(tǒng)中,以上三種總線缺一不可。把計(jì)算機(jī)的內(nèi)存儲(chǔ)器的每一個(gè)存儲(chǔ)單元從上向下依次疊放起來(lái)。把存儲(chǔ)器的存儲(chǔ)單元按照編號(hào)順序排成一豎排。2022/1/1815C語(yǔ)言程序設(shè)計(jì)(C版)0x200000050x200000040x200000030x200000020x200000010x200000000x000000000xFFFFFFFF

0x180x100000030x100000020x100000010x10000000圖1.4存儲(chǔ)器的抽象結(jié)構(gòu)101010102022/1/1816C語(yǔ)言程序設(shè)計(jì)(C版)什么是“位”呀?其實(shí)位是計(jì)算機(jī)信息表示的最小單位。計(jì)算機(jī)是通過(guò)存儲(chǔ)0和1的不同編碼組合來(lái)表示信息的。0和1的不同組合就是編碼。由于每一位要么存放0、要么存放1,只有這兩種選擇,一共有8次選擇的可能,所以總共有256種不同的組合,也就是說(shuō)0x20000000存儲(chǔ)單元就可以表示256種不同的信息。只有0和12022/1/1817C語(yǔ)言程序設(shè)計(jì)(C版)8位這其實(shí)就是“字節(jié)”的概念,計(jì)算機(jī)里的字節(jié)固定就是8位,一個(gè)字節(jié)占據(jù)一個(gè)存儲(chǔ)單元。絕大部分計(jì)算機(jī)的地址編碼也是按照字節(jié)來(lái)進(jìn)行編號(hào)的,也就是說(shuō)一個(gè)地址編碼對(duì)應(yīng)了一個(gè)字節(jié)存儲(chǔ)空間(8位)。存儲(chǔ)單元的編號(hào)也就是地址編號(hào)(即地址編碼)。1字節(jié)=8位2022/1/1818C語(yǔ)言程序設(shè)計(jì)(C版)計(jì)算機(jī)系統(tǒng)地址位數(shù)決定了其存儲(chǔ)空間的大小。地址系統(tǒng)只有20位,則內(nèi)存單元只有1M字節(jié)。地址系統(tǒng)有32位,則內(nèi)存單元只有4G字節(jié)。地址總線位數(shù)決定地址編碼范圍。2022/1/1819C語(yǔ)言程序設(shè)計(jì)(C版)計(jì)算機(jī)系統(tǒng)的地址位數(shù)與C程序的指針長(zhǎng)度密切相關(guān)。指針變量的意思很簡(jiǎn)單——就是一個(gè)用來(lái)存放編號(hào)(也就是內(nèi)存地址即指針值)的變量,也就是說(shuō)用來(lái)存放地址編號(hào)的變量叫指針變量。指針變量(指針變量就是用來(lái)存放地址的變量)所占用的存儲(chǔ)空間大小就是地址編號(hào)的位數(shù)。地址總線位數(shù)決定地址指針變量長(zhǎng)度2022/1/1820C語(yǔ)言程序設(shè)計(jì)(C版)1.1.2計(jì)算機(jī)的軟件系統(tǒng)軟件(Software)——是計(jì)算機(jī)實(shí)現(xiàn)各種功能的程序、文檔和數(shù)據(jù)的集合。系統(tǒng)軟件包括操作系統(tǒng)和各種語(yǔ)言處理軟件等。應(yīng)用軟件主要包括各個(gè)行業(yè)或者領(lǐng)域的功能處理軟件。2022/1/1821C語(yǔ)言程序設(shè)計(jì)(C版)圖1.5計(jì)算機(jī)軟件系統(tǒng)

各種語(yǔ)言處理軟件操作系統(tǒng)硬件

應(yīng)用軟件

系統(tǒng)軟件2022/1/1822C語(yǔ)言程序設(shè)計(jì)(C版)1.2計(jì)算機(jī)的基本工作原理馮·諾依曼(Neumann)定義了現(xiàn)代計(jì)算機(jī)的基本結(jié)構(gòu),其特點(diǎn)是:硬件系統(tǒng)由五大部件組成,各部件具有獨(dú)立的基本功能。采用二進(jìn)制形式表示數(shù)據(jù)和指令。二進(jìn)制用來(lái)表示信息的基本符號(hào)只有兩個(gè):0和1。2022/1/1823C語(yǔ)言程序設(shè)計(jì)(C版)存儲(chǔ)程序的基本原理計(jì)算機(jī)在執(zhí)行程序和處理數(shù)據(jù)時(shí)必須首先將程序和數(shù)據(jù)存儲(chǔ)在主存儲(chǔ)器中,計(jì)算機(jī)工作時(shí)自動(dòng)高速地從主存儲(chǔ)器中取出指令并加以分析、執(zhí)行。存儲(chǔ)程序、自動(dòng)執(zhí)行2022/1/1824C語(yǔ)言程序設(shè)計(jì)(C版)圖1.6圖靈機(jī)的基本組成結(jié)構(gòu)讀寫(xiě)頭存儲(chǔ)帶2022/1/1825C語(yǔ)言程序設(shè)計(jì)(C版)0x340x120x200000050x200000040x200000030x200000020x200000010x200000000x000000000xFFFFFFFF

0x100000030x100000020x100000010x10000000圖1.7讀寫(xiě)頭的移動(dòng)10101010讀寫(xiě)頭地址編號(hào)存儲(chǔ)單元存儲(chǔ)內(nèi)容2022/1/1826C語(yǔ)言程序設(shè)計(jì)(C版)根據(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ǔ)單元,反過(guò)來(lái),每個(gè)存儲(chǔ)單元都對(duì)應(yīng)了一個(gè)唯一的地址。2022/1/1827C語(yǔ)言程序設(shè)計(jì)(C版)計(jì)算機(jī)工作的過(guò)程就是不斷地從這些存儲(chǔ)單元取出指令、分析指令并執(zhí)行指令的過(guò)程。計(jì)算機(jī)究竟應(yīng)該從哪一個(gè)存儲(chǔ)單元取指令則完全依賴于計(jì)算機(jī)CPU內(nèi)的程序計(jì)數(shù)器值,程序計(jì)數(shù)器是CPU內(nèi)的一個(gè)特殊計(jì)數(shù)器,其中存放的就是將要取出的下一條指令的存儲(chǔ)單元地址。表示了讀寫(xiě)頭的位置2022/1/1828C語(yǔ)言程序設(shè)計(jì)(C版)程序?qū)δ骋粋€(gè)變量的操作實(shí)際上就是對(duì)這個(gè)變量所在的存儲(chǔ)單元的操作。C程序中的地址概念實(shí)際就是變量所在的存儲(chǔ)單元的地址編號(hào)。不同的變量可能占據(jù)不同個(gè)數(shù)的存儲(chǔ)單元,存放變量的第一個(gè)存儲(chǔ)單元的地址就是該變量的地址。變量的地址等于“首地址”2022/1/1829C語(yǔ)言程序設(shè)計(jì)(C版)1.2.3C程序的內(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è)部分,分別簡(jiǎn)稱(chēng)靜態(tài)存儲(chǔ)區(qū)和動(dòng)態(tài)存儲(chǔ)區(qū)。動(dòng)態(tài)存儲(chǔ)區(qū)又分為“堆”和“堆?!眱煞N結(jié)構(gòu)形式。2022/1/1830C語(yǔ)言程序設(shè)計(jì)(C版)“堆棧”空間大小有限,采用“先進(jìn)后出”的方式管理其數(shù)據(jù),而且C編譯器或操作系統(tǒng)自動(dòng)管理該部分空間,且其大小有限;而“堆”空間則可以很大,它的組織方式比較靈活,需要程序員自己管理。堆棧的效率比堆的效率明顯高很多。

2022/1/1831C語(yǔ)言程序設(shè)計(jì)(C版)C編譯器將計(jì)算機(jī)內(nèi)存分配方式分為以下三種:1.在靜態(tài)存儲(chǔ)區(qū)中分配——外部變量、static變量。2.在動(dòng)態(tài)存儲(chǔ)區(qū)的“堆?!鄙戏峙洹?.在動(dòng)態(tài)存儲(chǔ)區(qū)的“堆”上分配,亦稱(chēng)動(dòng)態(tài)內(nèi)存分配。程序員用malloc()函數(shù)申請(qǐng)堆內(nèi)存,用free()函數(shù)釋放堆內(nèi)存。2022/1/1832C語(yǔ)言程序設(shè)計(jì)(C版)0x200000050x200000040x200000030x200000020x200000010x200000000x000000000xFFFFFFFF

0x100000030x100000020x100000010x10000000圖1.9內(nèi)存分區(qū)10101010讀寫(xiě)頭0x400000050x400000040x400000030x400000020x400000010x40000000101010100x3000FFFF0x3000FFFE0x3000FFFD0x3000FFFC0x3000FFFB10101010靜態(tài)數(shù)據(jù)區(qū)

堆棧區(qū)

堆區(qū)

程序區(qū)數(shù)

據(jù)

區(qū)2022/1/1833C語(yǔ)言程序設(shè)計(jì)(C版)圖1.8內(nèi)存數(shù)據(jù)區(qū)分區(qū)靜態(tài)存儲(chǔ)區(qū)堆棧區(qū)堆區(qū)

永久生命周期

局部生命周期

用戶自己管理其生命周期2022/1/1834C語(yǔ)言程序設(shè)計(jì)(C版)1.3計(jì)算機(jī)語(yǔ)言計(jì)算機(jī)語(yǔ)言分為三類(lèi):機(jī)器語(yǔ)言、匯編語(yǔ)言和高級(jí)語(yǔ)言。機(jī)器語(yǔ)言是計(jì)算機(jī)能夠直接識(shí)別和處理的二進(jìn)制機(jī)器指令;“01010101”。匯編語(yǔ)言是符號(hào)化了的機(jī)器語(yǔ)言,也就是用一些符號(hào)來(lái)表示二進(jìn)制機(jī)器語(yǔ)言;“MOVAX,BX;”。而高級(jí)語(yǔ)言則是更符合人類(lèi)思維特性的抽象語(yǔ)言?!皔=x*x;”。2022/1/1835C語(yǔ)言程序設(shè)計(jì)(C版)1.4數(shù)據(jù)在計(jì)算機(jī)內(nèi)的表示在計(jì)算機(jī)中,用0和1的不同組合來(lái)表示不同的信息。00001001”究竟是表示1、2或者3啦?為什么它就表示的這個(gè)數(shù)啦?這涉及到進(jìn)位計(jì)數(shù)制和編碼的問(wèn)題。進(jìn)位計(jì)數(shù)制就是用一組特定的數(shù)字符號(hào)按照一定的進(jìn)位規(guī)則來(lái)表示數(shù)的計(jì)數(shù)方法。2022/1/1836C語(yǔ)言程序設(shè)計(jì)(C版)十進(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)”的概念。2022/1/1837C語(yǔ)言程序設(shè)計(jì)(C版)在C語(yǔ)言中,十六進(jìn)制表示以0x開(kāi)頭,八進(jìn)制以0開(kāi)頭,十進(jìn)制以非0數(shù)字開(kāi)頭。比如:0x1777(十六進(jìn)制表示)、01777(八進(jìn)制表示)、1777(十進(jìn)制表示)。2022/1/1838C語(yǔ)言程序設(shè)計(jì)(C版)所謂“基”,就是在一種進(jìn)位計(jì)數(shù)制中所使用的基本符號(hào)的個(gè)數(shù)。比如:0x88(正確的十六進(jìn)制表示)、088(錯(cuò)誤的八進(jìn)制表示)、8FF(錯(cuò)誤的十進(jìn)制表示)。2022/1/1839C語(yǔ)言程序設(shè)計(jì)(C版)“位權(quán)”實(shí)際上就是在某種進(jìn)制的編碼中,某一個(gè)位置的基本符號(hào)為1時(shí),它所代表的數(shù)值的大小。8648.72D=8×103+6×102+4×101+8×100+7×10-1+2×10-2在這個(gè)數(shù)中,從左至右的各位數(shù)字由于所處位置不同,它們所代表的數(shù)值的大小也不相同

2022/1/1840C語(yǔ)言程序設(shè)計(jì)(C版)在C語(yǔ)言以外的場(chǎng)合,通常可以用下標(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表示2022/1/1841C語(yǔ)言程序設(shè)計(jì)(C版)

十進(jìn)制 二進(jìn)制八進(jìn)制八進(jìn)制轉(zhuǎn)換為二進(jìn)制碼十六進(jìn)制十六進(jìn)制轉(zhuǎn)換為二進(jìn)制碼 0 0000 0 000 0 0000 1 0001 1 001 1 0001 2 0010 2 010 2 0010 3 0011 3 011 3 0011 4 0100 4 100 4 0100 5 0101 5 101 5 0101 6 0110 6 110 6 0110 7 0111 7 111 7 0111 8 1000 10 001000 8 1000 9 1001 11 001001 9 1001 10 1010 12 001010 A 1010 11 1011 13 001011 B 1011 12 1100 14 001100 C 1100 13 1101 15 001101 D 1101 14 1110 16 001110 E 1110 15 1111 17 001111 F 1111 16 10000 20 010000 10 00010000 17 10001 21 010001 11 00010001 2022/1/1842C語(yǔ)言程序設(shè)計(jì)(C版)不同進(jìn)位計(jì)數(shù)制之間的轉(zhuǎn)換

R進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)1001.11=23+20+2-1+2-2=9.750227 =2×82+2×81+7×80=1510x3AB =3×162+A×161+B×l60=3×162+10×161+11×160

=9392022/1/1843C語(yǔ)言程序設(shè)計(jì)(C版)十進(jìn)制數(shù)轉(zhuǎn)換為R進(jìn)制數(shù)125=1111101B,轉(zhuǎn)換過(guò)程如圖1.10所示:125=0175,轉(zhuǎn)換過(guò)程如圖1.10所示:125=0x7D,轉(zhuǎn)換過(guò)程如圖1.10所示:2022/1/1844C語(yǔ)言程序設(shè)計(jì)(C版)圖1.10十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)、八進(jìn)制數(shù)、十六進(jìn)制數(shù)2125262123102151271231211

01余數(shù)商高位81258155817

01余數(shù)商高位16

125167D

07余商高位2022/1/1845C語(yǔ)言程序設(shè)計(jì)(C版)二進(jìn)制數(shù)與八進(jìn)制、十六進(jìn)制數(shù)之間的轉(zhuǎn)換分組:010

100

111

101代值:2475結(jié)果:10100111101B=02475(小數(shù)分組,不足三位,必須補(bǔ)0)010100101.100100245.442022/1/1846C語(yǔ)言程序設(shè)計(jì)(C版)110001011010B = 0x0C5A1111111.101B = 0x7F.A0x0ABC = 1010101111000x0D65.4A=110101100101.0100101B2022/1/1847C語(yǔ)言程序設(shè)計(jì)(C版)數(shù)值信息在計(jì)算機(jī)中的表示數(shù)據(jù)分為數(shù)值型數(shù)據(jù)和非數(shù)值型數(shù)據(jù)兩大類(lèi)。數(shù)值型數(shù)據(jù)是指能進(jìn)行算術(shù)運(yùn)算(加、減、乘、除四則運(yùn)算)的數(shù)據(jù)。非數(shù)值數(shù)據(jù)是指文字、圖像等不能進(jìn)行算術(shù)運(yùn)算的數(shù)據(jù)。如何表示啦?實(shí)際上就是根據(jù)一定的約定來(lái)表示,這種約定就是表示數(shù)值大小的編碼規(guī)則。

2022/1/1848C語(yǔ)言程序設(shè)計(jì)(C版)機(jī)器數(shù)本身所具有的實(shí)際數(shù)值稱(chēng)為真值。同一個(gè)機(jī)器數(shù)按照編碼約定的方式不同可能具有不同的真值。大家一定要掌握某個(gè)數(shù)在計(jì)算機(jī)的機(jī)內(nèi)表示及其運(yùn)算規(guī)則。

相同的機(jī)器數(shù)、不同的真值2022/1/1849C語(yǔ)言程序設(shè)計(jì)(C版)原碼原碼就是在真值的基礎(chǔ)上加上符號(hào)位即可。十進(jìn)制二進(jìn)制真值原碼+94+101111001011110-49-0110001101100012022/1/1850C語(yǔ)言程序設(shè)計(jì)(C版)反碼對(duì)于正數(shù),其反碼與原碼形式相同;對(duì)于負(fù)數(shù),將原碼中符號(hào)位以外的各位數(shù)字取反即得補(bǔ)碼(即“0”變?yōu)椤?”,“1”變?yōu)椤?”)。例如:十進(jìn)制二進(jìn)制真值原碼反碼 +114+11100100111001001110010–89–101100111011001101001102022/1/1851C語(yǔ)言程序設(shè)計(jì)(C版)補(bǔ)碼對(duì)于正數(shù),其補(bǔ)碼與原碼形式相同;對(duì)于負(fù)數(shù),在反碼的基礎(chǔ)上,末位再加1就得到負(fù)數(shù)的補(bǔ)碼。例如:十進(jìn)制二進(jìn)制真值原碼反碼 補(bǔ)碼+114+11100100111001001110–89–101100111011 101001112022/1/1852C語(yǔ)言程序設(shè)計(jì)(C版)基本表示數(shù)值32位表示16位8位-211111111111111111111111111111110111111111111111011111110-10111111111111111111111111111101101111111111110110111101101100000000000000000000000000001011000000000000101100001011128000000000000000000000001000000000000000100000000超出表示范圍2022/1/1853C語(yǔ)言程序設(shè)計(jì)(C版)定點(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)。2022/1/1854C語(yǔ)言程序設(shè)計(jì)(C版)圖1.11定點(diǎn)整數(shù)和定點(diǎn)小數(shù)的表示11111001數(shù)符小數(shù)點(diǎn)位置

數(shù)值部分11111001數(shù)符小數(shù)點(diǎn)位置數(shù)值部分a.定點(diǎn)小數(shù)表示b.定點(diǎn)整數(shù)表示2022/1/1855C語(yǔ)言程序設(shè)計(jì)(C版)不同類(lèi)型的數(shù)在計(jì)算機(jī)中所占的字節(jié)數(shù)變量的數(shù)據(jù)類(lèi)型就決定了變量在內(nèi)存單元中所占據(jù)的字節(jié)數(shù),也決定了其取值范圍。folat(浮點(diǎn)型)4個(gè)字節(jié)double(雙精度浮點(diǎn)型)

8個(gè)字節(jié)char(字符型)

1個(gè)字節(jié)short(短整型)

2個(gè)字節(jié)long(長(zhǎng)整型)

4個(gè)字節(jié)int(整型)可能2字節(jié),也可能4字節(jié)(隨環(huán)境而不同)。決定長(zhǎng)度2022/1/1856C語(yǔ)言程序設(shè)計(jì)(C版)二進(jìn)制算術(shù)運(yùn)算和邏輯運(yùn)算算術(shù)運(yùn)算即加(+)、減(-)、乘(*)、除(/)、取余(%)五種運(yùn)算。

110110 (被加數(shù)) 101110 (加數(shù))+)11111(進(jìn)位)1100100(和數(shù))2022/1/1857C語(yǔ)言程序設(shè)計(jì)(C版)與運(yùn)算ABC0000101001112022/1/1858C語(yǔ)言程序設(shè)計(jì)(C版)或運(yùn)算ABC0000101001112022/1/1859C語(yǔ)言程序設(shè)計(jì)(C版)非運(yùn)算AC01102022/1/1860C語(yǔ)言程序設(shè)計(jì)(C版)異或運(yùn)算ABC0000111011102022/1/1861C語(yǔ)言程序設(shè)計(jì)(C版)位運(yùn)算C語(yǔ)言的邏輯運(yùn)算C語(yǔ)言的位運(yùn)算操作數(shù)100000001(非0=真)00000001操作數(shù)200000010(非0=真)00000010結(jié)果結(jié)果為真=100000000最后結(jié)果為02022/1/1862C語(yǔ)言程序設(shè)計(jì)(C版)ASCII碼ASCII碼是美國(guó)國(guó)家標(biāo)準(zhǔn)信息交換碼(AmericannationalStandardCodeforInformationInterchange)的簡(jiǎn)稱(chēng),是目前國(guó)際上使用最廣泛的計(jì)算機(jī)字符編碼。ASCII碼的編碼規(guī)則為:每個(gè)字符用7位二進(jìn)制數(shù)(b6b5b4b3b2blb0)來(lái)表示(如表1.9所示),7位二進(jìn)制共有128種狀態(tài)(27=128),可表示128個(gè)字符,7位二進(jìn)制編碼的取值范圍為~。2022/1/1863C語(yǔ)言程序設(shè)計(jì)(C版)

b6b5b4b3b2b1b00000010100111001011101110000NULDLESP0@P`p0001SOHDC1!1AQaq0010STXDC2"2BRbr0011ETXDC3#3CScs0100EOTDC4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111BELETB'7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;K[k{1100FFFS,<L\l|1101CRGS-=M]m}1110SORS.>N^n~1111SIUS/?O_oDEL2022/1/1864C語(yǔ)言程序設(shè)計(jì)(C版)1.5算法和數(shù)據(jù)結(jié)構(gòu)程序=算法+數(shù)據(jù)結(jié)構(gòu)對(duì)于學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言而言,數(shù)據(jù)結(jié)構(gòu)是很重要的,所有的算法都基于某種結(jié)構(gòu)。比如:當(dāng)一個(gè)艄公想把小羊、大白菜、和狼渡到河對(duì)岸的時(shí)候(當(dāng)艄公不在時(shí),狼要吃小羊、小羊要吃大白菜,而艄公的船一次只能夠載一樣?xùn)|西),他就會(huì)思考如何解決這件事,而他完成這件事的方法和步驟就是算法。2022/1/1865C語(yǔ)言程序設(shè)計(jì)(C版)它有以下特點(diǎn):有窮性:一個(gè)算法應(yīng)包含有限的操作步驟而不能是無(wú)限的。確定性:算法中每一個(gè)步驟應(yīng)當(dāng)是確定的,而不應(yīng)當(dāng)是含糊的、模棱兩可的。有零個(gè)或多個(gè)輸入。有一個(gè)或多個(gè)輸出。有效性:算法中每一個(gè)步驟應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果。2022/1/1866C語(yǔ)言程序設(shè)計(jì)(C版)數(shù)據(jù)結(jié)構(gòu)主要研究數(shù)據(jù)的組織方式、結(jié)構(gòu)關(guān)系以及相應(yīng)的操作方法。算法的設(shè)計(jì)與實(shí)現(xiàn),依賴于數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)的選擇直接決定了算法的質(zhì)量,而算法則決定了程序的質(zhì)量。2022/1/18

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論