《C語言程序設(shè)計(jì)》第2章 順序結(jié)構(gòu)程序設(shè)計(jì)寫字字帖_第1頁
《C語言程序設(shè)計(jì)》第2章 順序結(jié)構(gòu)程序設(shè)計(jì)寫字字帖_第2頁
《C語言程序設(shè)計(jì)》第2章 順序結(jié)構(gòu)程序設(shè)計(jì)寫字字帖_第3頁
《C語言程序設(shè)計(jì)》第2章 順序結(jié)構(gòu)程序設(shè)計(jì)寫字字帖_第4頁
《C語言程序設(shè)計(jì)》第2章 順序結(jié)構(gòu)程序設(shè)計(jì)寫字字帖_第5頁
已閱讀5頁,還剩65頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第2章順序結(jié)構(gòu)程序設(shè)計(jì)第2章順序結(jié)構(gòu)程序設(shè)計(jì)學(xué)習(xí)目標(biāo)本章主要介紹了順序程序設(shè)計(jì)方法、C語言中四種常用的基本輸入輸出函數(shù)printf、scanf、getchar、putchar的格式與使用方法,在本章的最后還介紹了基本位運(yùn)算的方法。通過本章的學(xué)習(xí),需要初步理解順序結(jié)構(gòu)程序設(shè)計(jì)思想,掌握四種基本輸入輸出函數(shù)的調(diào)用格式,理解基本位運(yùn)算的方法。第2章順序結(jié)構(gòu)程序設(shè)計(jì)2.1printf函數(shù)2.2scanf函數(shù)2.3字符數(shù)據(jù)的輸入和輸出2.4位運(yùn)算2.1printf函數(shù)2.1.1printf函數(shù)的一般格式2.1.2格式字符2.1.1printf函數(shù)的一般格式功能:按照用戶指定的格式,向系統(tǒng)隱含的輸出設(shè)備(終端)輸出若干個(gè)任意類型的數(shù)據(jù)。printf函數(shù)的一般格式:printf(“格式控制字符串”,輸出列表)printf函數(shù)稱為格式輸出函數(shù),其關(guān)鍵字最末一個(gè)字母f即為“格式”(format)之意。其功能是按用戶指定的格式,把指定的數(shù)據(jù)顯示到顯示器屏幕上。2.1.1printf函數(shù)的一般格式例如:printf("%d%c\n",i,c)格式控制字符串(轉(zhuǎn)換控制字符串):"%d%c\n"輸出列表:i,c其中,格式說明:%d%c函數(shù)參數(shù)包括兩部分:1.“格式控制”字符串是用雙引號(hào)括起來的字符串,也稱“轉(zhuǎn)換控制字符串”,它指定輸出數(shù)據(jù)項(xiàng)的類型和格式。它包括兩種信息:●格式說明項(xiàng):由“%”和格式字符組成,如%d,%f等。格式說明總是由“%”字符開始,到格式字符終止。它的作用是將輸出的數(shù)據(jù)項(xiàng)轉(zhuǎn)換為指定的格式輸出。輸出表列中的每個(gè)數(shù)據(jù)項(xiàng)對(duì)應(yīng)一個(gè)格式說明項(xiàng)?!衿胀ㄗ址杭葱枰瓨虞敵龅淖址?。例子中的逗號(hào)和換行符。2.“輸出列表”是需要輸出的一些數(shù)據(jù)項(xiàng),可以是表達(dá)式。例如:假如a=3,b=4,那么printf(“a=%db=%d”,a,b);輸出a=3b=4。其中兩個(gè)“%d”是格式說明,表示輸出兩個(gè)整數(shù),分別對(duì)應(yīng)變量a,b,“a=”,“b=”是普通字符,原樣輸出。由于printf是函數(shù),因此“格式控制”字符串和“輸出表列”實(shí)際上都是函數(shù)的參數(shù)。printf函數(shù)的一般形式可以表示為:printf(參數(shù)1、參數(shù)2、參數(shù)3、…參數(shù)n)printf函數(shù)的功能是將參數(shù)2-參數(shù)n按照參數(shù)1給定的格式輸出。例2.1以下程序運(yùn)行后的輸出結(jié)果是

(2010年9月全國計(jì)算機(jī)等級(jí)考試二級(jí)C試題填空題第6題)

#include<stdio.h>

main()

{inta=200,b=010;

printf(”%d%d\n”,a,b);}2.1.2格式字符對(duì)于不同類型的數(shù)據(jù)項(xiàng)應(yīng)當(dāng)使用不同的格式字符構(gòu)成的格式說明項(xiàng)。常用的有以下幾種格式字符:1.d格式符。用來輸出十進(jìn)制整數(shù)。有以下幾種用法:●%d,按照數(shù)據(jù)的實(shí)際長度輸出●%md,m指定輸出字段的寬度(整數(shù))。如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格(右對(duì)齊),若大于m,則按照實(shí)際位數(shù)輸出?!?-md,m指定輸出字段的寬度(整數(shù))。如果數(shù)據(jù)的位數(shù)小于m,則右端補(bǔ)以空格(左對(duì)齊),若大于m,則按照實(shí)際位數(shù)輸出。●%ld,輸出長整型數(shù)據(jù),也可以指定寬度%mld。例2.2%d格式幾種用法#include“stdio.h”程序預(yù)處理聲明#defineCODE255預(yù)處理聲明,常量CODE在程序中等于255main()主程序{printf(“*%d*\n”,CODE);按照數(shù)據(jù)的實(shí)際長度輸出printf(“*%2d*\n”,CODE);按照m=2的長度輸出printf(“*%10d*\n”,CODE);按照m=10的長度輸出printf(“*%-10d*\n”,CODE);按照%-md格式輸出return0; 程序返回主函數(shù)}運(yùn)行結(jié)果:*255**255**255**255*2.o格式符。以八進(jìn)制形式輸出整數(shù)。注意是將內(nèi)存單元中的各位的值按八進(jìn)制形式輸出,輸出的數(shù)據(jù)不帶符號(hào),即將符號(hào)位也一起作為八進(jìn)制的一部分輸出。例2.3%d、%o、%x格式輸出的比較#include“stdio.h”程序預(yù)處理聲明main()主程序,程序執(zhí)行開始{inta=-1; 定義變量a,并初始化printf(“%d,%o%x”,a,a,a);打印輸出}運(yùn)行結(jié)果:-1,177777,ffff3.x格式符。以十六進(jìn)制形式輸出整數(shù)。與o格式一樣,不出現(xiàn)負(fù)號(hào)。4.u格式符。用來輸出unsigned無符號(hào)型數(shù)據(jù),即無符號(hào)數(shù),以十進(jìn)制形式輸出。一個(gè)有符號(hào)整數(shù)可以用%u形式輸出,反之,一個(gè)unsigned型數(shù)據(jù)也可以用%d格式輸出。5.c格式符。用來輸出一個(gè)字符。一個(gè)整數(shù)只要它的值在0-255范圍內(nèi),也可以用字符形式輸出。反之,一個(gè)字符數(shù)據(jù)也可以用整數(shù)形式輸出。例2.4整形與字符型輸出的差別#include“stdio.h”main()主程序{charc=’a’; 聲明字符型變量c,并初始化inti=97; 聲明整形變量i,并初始化printf(“%c,%d\n”,c,c); 格式打印輸出變量cprintf(“%c,%d\n”,i,i); 格式打印輸出變量c}運(yùn)行結(jié)果:a,97a,97分析:也可以指定字段寬度。%mc,m-整數(shù)6.s格式符。用來輸出一個(gè)字符串。有幾種用法:%s,輸出字符串%ms,輸出的字符串占m列,如果字符串長度大于m,則字符串全部輸出;若字符串長度小于m,則左補(bǔ)空格(右對(duì)齊)。%-ms,輸出的字符串占m列,如果字符串長度大于m,則字符串全部輸出;若字符串長度小于m,則右補(bǔ)空格(左對(duì)齊)。%m.ns,輸出占m列,但只取字符串左端n個(gè)字符,左補(bǔ)空白(右對(duì)齊)。%-m.ns,輸出占m列,但只取字符串左端n個(gè)字符,右補(bǔ)空白(左對(duì)齊)。例2.5%s格式輸出的表現(xiàn)手法#include“stdio.h”#defineACITOR“hello,howdoyoudo?”

ACITOR等于hello,howdoyoudo?main()主程序{printf(“/%2s/\n”,ACITOR);按各種格式打印輸出printf(“/%24s/\n”,ACITOR);printf(“/%24.5s/\n”,ACITOR);printf(“/%-24.5s/\n”,ACITOR);return0;}運(yùn)行結(jié)果:/hello,howdoyoudo?//hello,howdoyoudo?//hello//hello/7.f格式符。用來輸出實(shí)數(shù)(包括單、雙精度,單雙精度格式符相同),以小數(shù)形式輸出。有以下幾種用法:%f,不指定寬度,使整數(shù)部分全部輸出,并輸出6位小數(shù)。注意,并非全部數(shù)字都是有效數(shù)字,單精度實(shí)數(shù)的有效位數(shù)一般為7位(雙精度16位)。例2.6單精度實(shí)數(shù)的有效位#include<stdio.h>main(){floatx,y;x=111111.111;y=222222.222printf(“%x”,x+y);}運(yùn)行結(jié)果:333333.328125例2.7雙精度實(shí)數(shù)的有效位#include<stdio.h>main(){doublex,y;x=11111111111111.11111111;y=22222222222222.22222222;printf(“%f”,x+y);}運(yùn)行結(jié)果:33333333333333.3330108.e格式符,以指數(shù)形式輸出實(shí)數(shù)??捎靡韵滦问剑?e,不指定輸出數(shù)據(jù)所占的寬度和小數(shù)位數(shù),由系統(tǒng)自動(dòng)指定,如6位小數(shù),指數(shù)占5位-e占1位,指數(shù)符號(hào)占1位,指數(shù)占3位。數(shù)值按照規(guī)格化指數(shù)形式輸出(小數(shù)點(diǎn)前必須有而且只有1位非0數(shù)字)。例如:1.234567e+002。(雙精度)%m.ne和%-m.ne,m總的寬度,n小數(shù)位數(shù)。例2.8程序段:(2009年3月全國計(jì)算機(jī)等級(jí)考試二級(jí)C試題選擇題第15題)intx=12;doubley=3.141593;printf("%d%8.6f",x,y);的輸出結(jié)果是:A)123.141593B)123.141593C)12,3.141593D)123.14159309.g格式符。用來輸出實(shí)數(shù),它根據(jù)數(shù)值的大小,自動(dòng)選f格式或e格式(選擇輸出時(shí)占寬度較小的一種),且不輸出無意義的0(小數(shù)末尾0)。例2.9%f,%e,%g輸出的比較#include“stdio.h”#define“ACITOR”main()主程序{floatf=123.10;printf("%f,%e,%g\n",f,f,f);按各種格式打印輸出}運(yùn)行結(jié)果:123.100000,1.23100e+02,123.1以上介紹的9種格式符,歸納如下表:格式字符描述d以帶符號(hào)的十進(jìn)制形式輸出整數(shù)(正數(shù)不帶符號(hào))o以8進(jìn)制無符號(hào)形式輸出整數(shù)(不輸出前導(dǎo)符號(hào)o)x以16進(jìn)制無符號(hào)形式輸出整數(shù)(不輸出前導(dǎo)符號(hào)ox)u以無符號(hào)10進(jìn)制形式輸出整數(shù)c以字符形式輸出,只輸出一個(gè)字符s輸出字符串f以小數(shù)形式輸出單、雙精度數(shù),隱含輸出6位小數(shù)e以標(biāo)準(zhǔn)指數(shù)形式輸出單、雙精度數(shù),數(shù)字部分小數(shù)位數(shù)為6位g選用%f或者%e格式中輸出寬度較短的一種格式,不輸出無意義的0表2.1printf格式字符功能描述

2.2scanf函數(shù)2.2.1scanf函數(shù)的一般格式2.2.2scanf函數(shù)中的格式聲明2.2.3使用scanf函數(shù)時(shí)應(yīng)注意的問題2.2.1scanf函數(shù)的一般格式

scanf(格式控制字符串,地址列表)其中:格式控制字符串的含義與printf類似,它指定輸入數(shù)據(jù)項(xiàng)的類型和格式。地址列表是由若干個(gè)地址組成的列表,可以是變量的地址(&變量名)或字符串的首地址。例2.10有以下程序(2009年3月全國計(jì)算機(jī)等級(jí)考試二級(jí)C試題選擇題第23題)#include<stdio.h>main(){inta1,a2;charc1,c2; scanf("%d%c%d%c",&a1,&c1,&a2,&c2); printf("%d,%c,%d,%c",a1,c1,a2,c2);}若通過鍵盤輸入,使得a1的值為12,a2的值為34,c1的值為字符a,c2的值為字符b,程序輸出結(jié)果是:12,a,34,b則正確的輸入格式是(以下_代表空格,<CR>代表回車)A)12a34b<CR> B)12_a_34_b<CR>C)12,a,34,b<CR> D)12_a34_b<CR>2.2.2scanf函數(shù)中的格式聲明格式字符描述d用來輸入十進(jìn)制整數(shù)o用來輸入八進(jìn)制整數(shù)x用來輸入十六進(jìn)制整數(shù)c用來輸入單個(gè)字符s用來輸入字符串,將字符串送到一個(gè)字符數(shù)組中,在輸入時(shí)以非空白字符開始,以第一個(gè)空白字符結(jié)束。字符串以串結(jié)束標(biāo)志”\o”作為其最后一個(gè)字符f用來輸入實(shí)數(shù),可以用小數(shù)形式或指數(shù)形式輸入e與f作用相同,e與f可以相互替換,即輸入指數(shù)形式的實(shí)數(shù)表2.3scanf格式字符功能描述2.2.2scanf函數(shù)中的格式聲明字符說明l用于輸入長整型數(shù)據(jù)(可用%ld,%lo,%lx),以及雙精度型數(shù)據(jù)(用%lf或者%le)h用于輸入短整型數(shù)據(jù)(可用%hd,%ho,%hx)域?qū)挘ㄕ麛?shù))指定輸入數(shù)據(jù)所占寬度或者列數(shù).表示本輸入項(xiàng)在讀入后不賦給相應(yīng)的變量表2.4scanf格式中附加格式說明字符2.2.2scanf函數(shù)中的格式聲明例2.11有以下程序(2010年9月全國計(jì)算機(jī)等級(jí)考試二級(jí)C試題填空題第7題)

#include<stdio.h>

main()

{int

x,Y;

scanf(”%2d%ld”,&x,&y);printf(”%d\n”,x+y);}程序運(yùn)行時(shí)輸入:1234567程序的運(yùn)行結(jié)果是

。2.2.3使用scanf函數(shù)時(shí)應(yīng)注意的問題1.scanf函數(shù)中格式控制符后面應(yīng)當(dāng)是變量地址,而不應(yīng)是變量名。2.如果在“格式控制”字符串中除了格式說明以外還有其它字符,則在輸入數(shù)據(jù)時(shí)在對(duì)應(yīng)位置應(yīng)當(dāng)輸入與這些字符相同的字符。建議不要使用其它的字符。3.在用“%c”格式輸入字符時(shí),空格字符和轉(zhuǎn)義字符都作為有效字符輸入。%c只要求讀入一個(gè)字符,后面不需要用空格作為兩個(gè)字符的間隔。2.2.3使用scanf函數(shù)時(shí)應(yīng)注意的問題4.在輸入數(shù)據(jù)時(shí),遇到下面情況認(rèn)為該數(shù)據(jù)結(jié)束:1)遇到空格,或按“回車”或“跳格”(tab)鍵。如:int

a,b,c;scanf(“%d%d%d”,&a,&b,&c);輸入:1234(tab) 567<CR>后,a=12,b=34,c=5672)按指定的寬度結(jié)束3)遇到非法的輸入。如:floata,c;charb;scanf(“%d%c%f”,&a,&b,&c);輸入:1234a123o.26<回車>后,a=1234.0,b=’a’,c=123.0(而不是希望的1230.26)C語言的格式輸入輸出的規(guī)定比較繁瑣,重點(diǎn)掌握最常用的一些規(guī)則和規(guī)律即可,其它部分可在需要時(shí)隨時(shí)查閱。希望大家勤于動(dòng)手,多上機(jī)練習(xí)來加強(qiáng)上機(jī)操作!4)&的使用條件例2.12&符號(hào)要根據(jù)實(shí)際情況而定有以下程序段(2011年3月全國計(jì)算機(jī)等級(jí)考試二級(jí)C試題選擇題第16題)charname[20];

intnum;

scanf("name=%snum=%d",name;&num);當(dāng)執(zhí)行上述程序段,并從鍵盤輸入:name=Lilinum=1001<回車>后,name的值為A)LiliB)name=Lili

C)Lilinum=

D)name=Lilinum=10012.3字符數(shù)據(jù)的輸入和輸出2.3.1putchar函數(shù)輸出一個(gè)字符2.3.2getchar函數(shù)輸入一個(gè)字符2.3.1putchar函數(shù)輸出一個(gè)字符一般形式:putchar(字符表達(dá)式);例如:

putchar('A');(輸出大寫字母A)

putchar(x);(輸出字符變量x的值)putchar(‘\101’);(也是輸出字符A)putchar('\n');(換行)對(duì)控制字符則執(zhí)行控制功能,不在屏幕上顯示。使用本函數(shù)前必須要用文件包含命令:#include<stdio.h>或#include“stdio.h”例2.13輸出單個(gè)字符#include<stdio.h>main(){chara='B',b='o',c='k';putchar(a);putchar(b);putchar(b);putchar(c);putchar('\t');putchar(a);putchar(b);putchar('\n');putchar(b);putchar(c);}運(yùn)行結(jié)果:BookBook2.3.2getchar函數(shù)輸入一個(gè)字符一般形式:c=getchar();【功能】從終端(鍵盤)輸入一個(gè)字符,以回車鍵確認(rèn)。函數(shù)的返回值就是輸入的字符。例如:通常把輸入的字符賦予一個(gè)字符變量,構(gòu)成賦值語句,如:

charc;c=getchar();例2.14有以下程序(2010年3月全國計(jì)算機(jī)等級(jí)考試二級(jí)C試題選擇題第15題)#include<stdio.h>

main()

{chara,b,c,d;

scanf(“%c%c”,&a,&b);

c=getchar();d=getchar();

printf(“%c%c%c%c\n”,a,b,c,d);

}當(dāng)執(zhí)行程序時(shí),按下列方式輸入數(shù)據(jù)(從第1列開始,注意:回車也是一個(gè)字符)1234則輸出結(jié)果是:A)1234

B)12

C)12

D)12

3432.4位運(yùn)算2.4.1位運(yùn)算符2.4.2簡單的位運(yùn)算2.4.1位運(yùn)算符C語言提供了六種位運(yùn)算符:運(yùn)算符含義描述&按位與如果兩個(gè)相應(yīng)的二進(jìn)制位都為1,則該位的結(jié)果值為1,否則為0|按位或兩個(gè)相應(yīng)的二進(jìn)制位中只要有一個(gè)為1,該位的結(jié)果值為1^按位異或若參加運(yùn)算的兩個(gè)二進(jìn)制位值相同則為0,否則為1~取反

~是一元運(yùn)算符,用來對(duì)一個(gè)二進(jìn)制數(shù)按位取反,即將0變1,將1變0<<左移用來將一個(gè)數(shù)的各二進(jìn)制位全部左移N位,右補(bǔ)0>>右移將一個(gè)數(shù)的各二進(jìn)制位右移N位,移到右端的低位被舍棄,對(duì)于無符號(hào)數(shù),高位補(bǔ)01.按位與運(yùn)算按位與運(yùn)算符"&"是雙目運(yùn)算符。其功能是參與運(yùn)算的兩數(shù)各對(duì)應(yīng)的二進(jìn)位相與。只有對(duì)應(yīng)的兩個(gè)二進(jìn)位均為1時(shí),結(jié)果位才為1,否則為0。參與運(yùn)算的數(shù)以補(bǔ)碼方式出現(xiàn)。按位與運(yùn)算通常用來對(duì)某些位清0或保留某些位。例如把a(bǔ)的高八位清0,保留低八位,可作a&255運(yùn)算(255的二進(jìn)制數(shù)為0000000011111111)。例2.15按位與運(yùn)算#include<stdio.h>main(){inta=9,b=5,c;c=a&b;printf("a=%d\nb=%d\nc=%d\n",a,b,c);}運(yùn)算結(jié)果:a=9b=5c=1分析:9&5可寫算式如下:00001001(9的二進(jìn)制補(bǔ)碼)&00000101(5的二進(jìn)制補(bǔ)碼)00000001(1的二進(jìn)制補(bǔ)碼)可見9&5=1。2.按位或運(yùn)算按位或運(yùn)算符“|”是雙目運(yùn)算符。其功能是參與運(yùn)算的兩數(shù)各對(duì)應(yīng)的二進(jìn)制數(shù)位相或。只要對(duì)應(yīng)的二個(gè)二進(jìn)位有一個(gè)為1時(shí),結(jié)果位就為1。參與運(yùn)算的兩個(gè)數(shù)均以補(bǔ)碼出現(xiàn)。例2.16按位或運(yùn)算#include<stdio.h>main(){inta=9,b=5,c;c=a|b;printf("a=%d\nb=%d\nc=%d\n",a,b,c);}運(yùn)行結(jié)果:a=9b=5c=13分析:9|5可寫算式如下:00001001|00000101=00001101(十進(jìn)制為13)可見9|5=133.按位異或運(yùn)算按位異或運(yùn)算符“^”是雙目運(yùn)算符。其功能是參與運(yùn)算的兩數(shù)各對(duì)應(yīng)的二進(jìn)制數(shù)位相異或,當(dāng)兩對(duì)應(yīng)的二進(jìn)位相異時(shí),結(jié)果為1。參與運(yùn)算數(shù)仍以補(bǔ)碼出現(xiàn),例2.17按位異或運(yùn)算#include<stdio.h>main(){inta=9;a=a^15;printf("a=%d\n",a);}運(yùn)算結(jié)果:a=6分析:9^5可寫成算式如下:00001001^0000010100001100(十進(jìn)制為12)4.求反運(yùn)算求反運(yùn)算符~為單目運(yùn)算符,具有右結(jié)合性。其功能是對(duì)參與運(yùn)算的數(shù)的各二進(jìn)制數(shù)位按位求反。例如~9的運(yùn)算為:~(0000000000001001)結(jié)果為:1111111111110110。大家可以按照順序程序的寫法,上機(jī)實(shí)際操作。5.左移運(yùn)算左移運(yùn)算符“<<”是雙目運(yùn)算符。其功能把“<<”左邊的運(yùn)算數(shù)的各二進(jìn)制數(shù)位全部左移若干位,由“<<”右邊的數(shù)指定移動(dòng)的位數(shù),高位丟棄,低位補(bǔ)0。例如:a<<4指把a(bǔ)的各二進(jìn)制數(shù)位向左移動(dòng)4位。如a=00000011(十進(jìn)制3),左移4位后為00110000(十進(jìn)制48)。6.右移運(yùn)算右移運(yùn)算符“>>”是雙目運(yùn)算符。其功能是把“>>”左邊的運(yùn)算數(shù)的各二進(jìn)制數(shù)位全部右移若干位,“>>”右邊的數(shù)指定移動(dòng)的位數(shù)。例如:設(shè)a=15,a>>2表示把000001111右移為00000011(十進(jìn)制3)。應(yīng)該說明的是,對(duì)于有符號(hào)數(shù),在右移時(shí),符號(hào)位將隨同移動(dòng)。當(dāng)為正數(shù)時(shí),最高位補(bǔ)0,而為負(fù)數(shù)時(shí),符號(hào)位為1。即:右移時(shí)最高位補(bǔ)符號(hào)位,左移時(shí)最低位補(bǔ)零。例2.18有以下程序(2009年3月全國計(jì)算機(jī)等級(jí)考試二級(jí)C試題選擇題第39題)#include<stdio.h>main(){inta=5,b=1,t;t=(a<<2)|b;printf("%d\n",t);}程序運(yùn)行后的輸出結(jié)果是A)21B)11C)6D)1分析:選擇A答案。程序中的關(guān)鍵語句為t=(a<<2)|b;由于當(dāng)一個(gè)數(shù)左移1位時(shí)表示該數(shù)乘以2(請(qǐng)自行驗(yàn)證),因此表達(dá)式a<<2的值為變量a左移兩位得到,即5*4=20(請(qǐng)?zhí)貏e注意:a的值并未變化,僅僅是表達(dá)式的值為20!)。因此計(jì)算過程為:t=(a<<2)|b=(5<<2)|1=20|1=21。例2.19按位右移運(yùn)算#include<stdio.h>main(){chara='a',b='b';int

p,c,d;p=a;p=(p<<8)|b;d=p&0xff;c=(p&0xff00)>>8;printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);}運(yùn)行結(jié)果:a=97b=98c=97d=982.4.2簡單的位運(yùn)算1.“按位與”運(yùn)算符(&)按位與是指:參加運(yùn)算的兩個(gè)數(shù)據(jù),按二進(jìn)制數(shù)位進(jìn)行“與”運(yùn)算。如果兩個(gè)相應(yīng)的二進(jìn)制數(shù)位都為1,則該位的結(jié)果值為1;否則為0。這里的1可以理解為邏輯中的true,0可以理解為邏輯中的false。按位與其實(shí)與邏輯上“與”的運(yùn)算規(guī)則一致。邏輯上的“與”,要求運(yùn)算數(shù)全真,結(jié)果才為真。若,A=true,B=true,則A∩B=true例2.20按位與運(yùn)算#include<stdio.h>main(){inta=3intb=5;printf("%d",a&b);}運(yùn)行結(jié)果:1按位與的用途:1)清零若想對(duì)一個(gè)存儲(chǔ)單元清零,即使其全部二進(jìn)制位為0,只要找一個(gè)二進(jìn)制數(shù),其中各個(gè)位符合一下條件:原來的數(shù)中為1的位,新數(shù)中相應(yīng)位為0。然后使二者進(jìn)行&運(yùn)算,即可達(dá)到清零目的。例2.21按位與運(yùn)算—清零#include<stdio.h>main(){inta=43;intb=148;printf("%d",a&b);}運(yùn)算結(jié)果:0分析:原數(shù)為43,即00101011(2),另找一個(gè)數(shù),設(shè)它為148,即10010100(2),將兩者按位與運(yùn)算:00101011(2)&10010100(2)=00000000(2)2)取一個(gè)數(shù)中某些指定位若有一個(gè)整數(shù)a(2byte),想要取其中的低字節(jié),只需要將a與8個(gè)1按位與即可。a0010110010101100b0000000011111111c0000000010101100

3)保留指定位:與一個(gè)數(shù)進(jìn)行“按位與”運(yùn)算,此數(shù)在該位取1.例2.22按位與運(yùn)算—保留指定位#include<stdio.h>main(){inta=84;intb=59;printf("%d",a&b);}運(yùn)行結(jié)果:162.“按位或”運(yùn)算符(|)

兩個(gè)相應(yīng)的二進(jìn)制位中只要有一個(gè)為1,該位的結(jié)果值為1。借用邏輯學(xué)中或運(yùn)算的話來說就是,一真為真。例如:60(8)|17(8),將八進(jìn)制60與八進(jìn)制17進(jìn)行按位或運(yùn)算。

00110000|00001111=00111111例2.23按位或運(yùn)算#include<stdio.h>main(){inta=060;intb=017;printf("%d",a|b);}運(yùn)行結(jié)果:633.“異或”運(yùn)算符(^)規(guī)則是:若參加運(yùn)算的兩個(gè)二進(jìn)制位值相同則為0,否則為1即0∧0=0,0∧1=1,1∧0=1,1∧1=0例2.24按位或運(yùn)算#include<stdio.h>main(){inta=071;intb=052;printf("%d",a^b);}運(yùn)行結(jié)果:19分析:00111001∧00101010=00010011應(yīng)用:1)使特定位翻轉(zhuǎn)設(shè)有數(shù)01111010(2),想使其低4位翻轉(zhuǎn),即1變0,0變1.可以將其與00001111(2)進(jìn)行“異或”運(yùn)算,即:01111010(2)^00001111(2)=01110101(2)運(yùn)算結(jié)果的低4位正好是原數(shù)低4位的翻轉(zhuǎn)??梢?,要使哪幾位翻轉(zhuǎn)就將與其進(jìn)行∧運(yùn)算的對(duì)應(yīng)位置為1即可。2)與0相“異或”,保留原值例如:012^00=01200001010^00000000=00001010因?yàn)樵瓟?shù)中的1與0進(jìn)行異或運(yùn)算得1,0^0得0,故保留原數(shù)。3)交換兩個(gè)值,不用臨時(shí)變量a=3,即11(2);b=4,即100(2)。想將a和b的值互換,可以用以下賦值語句實(shí)現(xiàn):c語言源代碼:例2.25按位異或運(yùn)算#include<stdio.h>main(){inta=3;intb=4;a=a^b;b=b^a;a=a^b;printf("a=%db=%d",a,b);

溫馨提示

  • 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)論