(6.19)--补充课件第13讲-位运算程序设计基础.ppt

上传人:奉*** 文档编号:96384255 上传时间:2023-11-19 格式:PPT 页数:50 大小:827KB
返回 下载 相关 举报
(6.19)--补充课件第13讲-位运算程序设计基础.ppt_第1页
第1页 / 共50页
(6.19)--补充课件第13讲-位运算程序设计基础.ppt_第2页
第2页 / 共50页
点击查看更多>>
资源描述

《(6.19)--补充课件第13讲-位运算程序设计基础.ppt》由会员分享,可在线阅读,更多相关《(6.19)--补充课件第13讲-位运算程序设计基础.ppt(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第十三讲位运算第十三讲位运算C语言程序设计语言程序设计 The C Programming Language2C语言程序设计语言程序设计 温州理工学院温州理工学院 2位运算位运算本章要求本章要求掌握各种位运算符,运算规则和优先级。掌握各种位运算符,运算规则和优先级。了解位运算的实际应用。了解位运算的实际应用。了解位段的定义和应用。了解位段的定义和应用。本章重点本章重点掌握各种位运算符,运算规则和优先级。掌握各种位运算符,运算规则和优先级。了解位运算的实际应用。了解位运算的实际应用。本章难点本章难点掌握各种位运算符,运算规则和优先级。掌握各种位运算符,运算规则和优先级。3C语言程序设计语言程序设

2、计 温州理工学院温州理工学院 3位运算位运算概述概述位运算符和位运算位运算符和位运算位运算举例位运算举例位段位段小结小结参考书目及网络资源参考书目及网络资源讨论时间讨论时间4C语言程序设计语言程序设计 温州理工学院温州理工学院 4位运算位运算概述概述位运算符和位运算位运算符和位运算位运算举例位运算举例位段位段小结小结参考书目及网络资源参考书目及网络资源讨论时间讨论时间5C语言程序设计语言程序设计 温州理工学院温州理工学院 5在很多系统程序中常要求在位在很多系统程序中常要求在位(bit)一级进行运一级进行运算或处理。算或处理。C语言提供了语言提供了位运算位运算的功能,这的功能,这使使得得C语言语

3、言也能像汇编语言一样用来编写系统程也能像汇编语言一样用来编写系统程序。序。位运算位运算是指按二进制位进行的运算。因为在系是指按二进制位进行的运算。因为在系统软件中,常要处理二进制位的问题。例如:统软件中,常要处理二进制位的问题。例如:将一个存储单元中的各二进制位左移或右移一将一个存储单元中的各二进制位左移或右移一位,两个数按位相加等。位,两个数按位相加等。C语言提供语言提供位运算位运算的功能,与其他高级语言的功能,与其他高级语言(如(如PASCAL等)相比,具有很大的优越性。等)相比,具有很大的优越性。概述概述6C语言程序设计语言程序设计 温州理工学院温州理工学院 6位运算符和位运算位运算符和

4、位运算位运算对象为整型或字符型数据。位运算对象为整型或字符型数据。位运算是对运算对象的每个二进制位分别操作。位运算是对运算对象的每个二进制位分别操作。位运算符中除位运算符中除以外,均为二目(元)运算符,即以外,均为二目(元)运算符,即要求两侧各有一个运算量。要求两侧各有一个运算量。运算符运算符含义含义运算对象个数运算对象个数结合方向结合方向优先级优先级&|按位求反按位求反按位左移按位左移按位右移按位右移按位与按位与按位异或按位异或按位或按位或单目单目双目双目双目双目双目双目双目双目双目双目自右向左自右向左自左向右自左向右自左向右自左向右自左向右自左向右自左向右自左向右自左向右自左向右12234

5、57C语言程序设计语言程序设计 温州理工学院温州理工学院 7位运算位运算概述概述位运算符和位运算位运算符和位运算位运算举例位运算举例位段位段小结小结参考书目及网络资源参考书目及网络资源讨论时间讨论时间8C语言程序设计语言程序设计 温州理工学院温州理工学院 8按位逻辑运算按位逻辑运算“按位与按位与”运算符运算符(&)按位与运算符按位与运算符“&”是双目运算符。其功能是参与运是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二算的两数各对应的二进位相与。只有对应的两个二进位均为进位均为1 时,结果位才为时,结果位才为1,否则为,否则为0。参与运算的。参与运算的数以补码方式出现。

6、数以补码方式出现。例如:例如:9&5 可写算式如下:可写算式如下:可见可见9&5=1。00001001(9 的二进制补码的二进制补码)&00000101(5 的二进制补码的二进制补码)00000001(1 的二进制补码的二进制补码)9C语言程序设计语言程序设计 温州理工学院温州理工学院 9按位逻辑运算按位逻辑运算按位与运算通常用来对某些位清按位与运算通常用来对某些位清0 或保留某些位。或保留某些位。例如把例如把a的高八位清的高八位清0,保留低八位保留低八位,可作可作a&255 运运算算(255 的二进制数为的二进制数为0000000011111111)。如果参加如果参加&运算的是负数运算的是负

7、数(如如-3&-5),则要以补码则要以补码形式表示为二进制数,然后再按位进行形式表示为二进制数,然后再按位进行“与与”运运算。算。10C语言程序设计语言程序设计 温州理工学院温州理工学院 10“按位与按位与”运算符运算符(&)main()int a=9,b=5,c;c=a&b;printf(a=%dnb=%dnc=%dn,a,b,c);11C语言程序设计语言程序设计 温州理工学院温州理工学院 11“按位与按位与”运算运算(&)的用途的用途清零清零,如果要将某个存储单元清零,则找到,如果要将某个存储单元清零,则找到一个数,它的补码中的各位的值,与原来存一个数,它的补码中的各位的值,与原来存储单元

8、的各位的值的与运算的结果为储单元的各位的值的与运算的结果为0,则这,则这两个数的与的结果为两个数的与的结果为0,这样就可以达到使原,这样就可以达到使原来的单元清零的目的。来的单元清零的目的。原有数为原有数为00101011,另找一个数,另找一个数10010100,这样,这样在原数为在原数为1的位置上,该数的相应位值均为的位置上,该数的相应位值均为0。将。将这两个数进行这两个数进行&运算:运算:00101011&10010100 00000000 12C语言程序设计语言程序设计 温州理工学院温州理工学院 12“按位与按位与”运算运算(&)的用途的用途取一个数中某些指定位取一个数中某些指定位如有一

9、个整数如有一个整数a(2个字节个字节),想要取其中的低字节,想要取其中的低字节,只需将只需将a与与8个个1按位与即可,即按位与即可,即a与八进制的与八进制的377。想要取其中的高字节,只需将想要取其中的高字节,只需将a与八进制的与八进制的0177400即可。即可。0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 0abc0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 10 0 0 0 0 0 0 0 1 0 1 0 1 1 0 00 0 1 0 1 1 0 0 1 0 1 0 1 1 0 0abc1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 00 0 1 0

10、 1 1 0 0 0 0 0 0 0 0 0 013C语言程序设计语言程序设计 温州理工学院温州理工学院 13“按位与按位与”运算运算(&)的用途的用途保留一位的方法:与一个数进行保留一位的方法:与一个数进行&运算,此数运算,此数在该位取在该位取1。例:有一数例:有一数01010100,想把其中左面第,想把其中左面第3、4、5、7、8位保留下来,运算如下:位保留下来,运算如下:01010100(84)&00111011(59)00010000(16)14C语言程序设计语言程序设计 温州理工学院温州理工学院 14“按位或按位或”运算符运算符(|)按位或运算符按位或运算符“|”是双目运算符。其功能

11、是参与运是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二算的两数各对应的二进位相或。只要对应的二个二进位有一个为进位有一个为1 时,结果位就为时,结果位就为1。即。即0|0=0,0|1=1,1|0=1,1|1=1。参与运算的两个数均以补码出现。参与运算的两个数均以补码出现。按位或运算常用来对一个数据的某些位定值为按位或运算常用来对一个数据的某些位定值为1。例如:如果想使一个数例如:如果想使一个数a的低的低4位改为位改为1,只需将,只需将a与与017进行按位或运算即可。如进行按位或运算即可。如060|017,将八进制将八进制数数60与八进制数与八进制数17进行按位或运算进

12、行按位或运算 00110000|00001111 00111111 15C语言程序设计语言程序设计 温州理工学院温州理工学院 15“按位或按位或”运算符运算符(|)若若a是一个整数(是一个整数(16位)位),有表达式有表达式:a|0377,则则低低8位全置为位全置为1,高,高8位保留原样。位保留原样。0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 0abc0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 10 0 1 0 1 1 0 0 1 1 1 1 1 1 1 116C语言程序设计语言程序设计 温州理工学院温州理工学院 16“异或异或”运算运算()按位异或运算符按位异

13、或运算符“”是双目运算符,也称是双目运算符,也称XOR运算符。其功能是参与运算的两数各对运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异应的二进位相异或,当两对应的二进位相异时,结果为时,结果为1。参与运算数仍以补码出现。参与运算数仍以补码出现。即即:071052=023(八进制数)(八进制数)00111001 00101010 00010011 17C语言程序设计语言程序设计 温州理工学院温州理工学院 17“异或异或”运算运算()的应用的应用使特定位翻转使特定位翻转:设有设有01111010,想使其低,想使其低4位翻位翻转,即转,即1变为变为0,0变为变为1。可以将它

14、与。可以将它与00001111进行进行运算,即:运算,即:运算结果的低运算结果的低4位正好是原数低位正好是原数低4位的翻转。可见,位的翻转。可见,要使哪几位翻转就将与其进行要使哪几位翻转就将与其进行运算的该几位置为运算的该几位置为1即可。即可。01111010 00001111 0111010118C语言程序设计语言程序设计 温州理工学院温州理工学院 18“异或异或”运算运算()的应用的应用与与0相相,保留原值。因为原数中的,保留原值。因为原数中的1与与0进行进行运算得运算得1,00得得0,故保留原数。例如:,故保留原数。例如:01200=012。交换两个值,不用临时变量。例如:交换两个值,不

15、用临时变量。例如:a=3,b=4。想将。想将a和和b的值互换,可以用以下赋值语句实现:的值互换,可以用以下赋值语句实现:a=ab;b=ba;a=ab;00001010 00000000 0000101019C语言程序设计语言程序设计 温州理工学院温州理工学院 19“异或异或”运算运算()的应用的应用执行前两个赋值语句:执行前两个赋值语句:“a=ab;”和和“b=ba;”相相当于当于b=b(ab)。再执行第三个赋值语句:再执行第三个赋值语句:a=ab;由于由于a的值等于的值等于(ab),),b的值等于(的值等于(bab),因此,相当于),因此,相当于a=abbab,即,即a的值等于的值等于aab

16、bb,等于,等于b。a得到得到b原来的值。原来的值。a0 1 1 ()b1 0 0 a1 1 1(ab的结果,的结果,a已变成已变成7)()b1 0 0 b0 1 1(ba的结果,的结果,b已变成已变成3)()a1 1 1 a1 0 0(ab的结果,的结果,a已变成已变成4)20C语言程序设计语言程序设计 温州理工学院温州理工学院 20“取反取反”运算符()运算符()求反运算符为单目运算符,具有右结合性。其功能求反运算符为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。例如,是对参与运算的数的各二进位按位求反。例如,025是对八进制数是对八进制数25(即二进制数即二进制数0

17、0010101)按位求反。按位求反。运算符的优先级比算术运算符、关系运算符、逻辑运算符的优先级比算术运算符、关系运算符、逻辑运算符和其它运算符都高。例如,运算符和其它运算符都高。例如,a&b,先进行,先进行a运算,然后进行运算,然后进行&运算。运算。()()0000000000010101 111111111110101021C语言程序设计语言程序设计 温州理工学院温州理工学院 21移位运算符移位运算符移位运算符移位运算符:(右移右移)一般形式为一般形式为:xn规则为:规则为:左移是将左移是将x的二进制位左移的二进制位左移n位,移出的高位舍位,移出的高位舍弃,右边空出位补弃,右边空出位补0;右

18、移是将右移是将x的二进制位右移的二进制位右移n位,移出的底位舍位,移出的底位舍弃,右边空出位如为无符号位补弃,右边空出位如为无符号位补0;有符号数正;有符号数正数补数补0,负数补,负数补1。设设a=7,则:,则:b=a2 b=0000,01112=0001,1100=2822C语言程序设计语言程序设计 温州理工学院温州理工学院 22移位运算符移位运算符左移运算符左移运算符()左移左移1位相当于该数乘以位相当于该数乘以2,左移,左移2位相当于该数位相当于该数乘以乘以22=,15)右移运算符是右移运算符是a2表示将表示将a的各二进制位右移的各二进制位右移2位,位,移到右端的低位被舍弃移到右端的低位

19、被舍弃,对无符号数对无符号数,高位补高位补0。例如:。例如:a=017时时,a的值用二进制形式表示为的值用二进制形式表示为00001111,舍弃舍弃低低2位位11:a2=00000011。在右移时在右移时,需要注意符号位问题:需要注意符号位问题:对无符号数对无符号数,右移时左边高位移入右移时左边高位移入0;对于有符号的值;对于有符号的值,如果原来符号位为如果原来符号位为0(该数为正该数为正),则左边也是移入则左边也是移入0。如。如果符号位原来为果符号位原来为1(即负数即负数),则左边移入则左边移入0还是还是1,要取决要取决于所用的计算机系统。有的系统移入于所用的计算机系统。有的系统移入0,有的

20、系统移入有的系统移入1。移入。移入0的称为的称为“逻辑右移逻辑右移”,即简单右移;移入即简单右移;移入1的的称为称为“算术右移算术右移”。24C语言程序设计语言程序设计 温州理工学院温州理工学院 24位运算符和位运算位运算符和位运算例:例:a的值是八进制数的值是八进制数113755:a:1001011111101101 (用二进制形式表示)(用二进制形式表示)a1:0100101111110110 (逻辑右移时逻辑右移时)a1:1100101111110110 (算术右移时算术右移时)在有些系统中在有些系统中,a1得八进制数得八进制数045766,而在另而在另一些系统上可能得到的是一些系统上可

21、能得到的是145766。Turbo C和和其他一些其他一些C编译采用的是算术右移编译采用的是算术右移,即对有符号即对有符号数右移时数右移时,如果符号位原来为如果符号位原来为1,左面移入高位,左面移入高位的是的是1。25C语言程序设计语言程序设计 温州理工学院温州理工学院 25位运算符和位运算位运算符和位运算main()unsigned a,b;printf(input a number:);scanf(%d,&a);b=a5;b=b&15;printf(a=%dtb=%dn,a,b);main()char a=a,b=b;int p,c,d;p=a;p=(p8;printf(a=%dnb=%d

22、nc=%dnd=%dn,a,b,c,d);26C语言程序设计语言程序设计 温州理工学院温州理工学院 26位运算符和位运算位运算符和位运算位运算赋值运算符位运算赋值运算符5种位运算赋值运算符为种位运算赋值运算符为:&=、|=、=、=、=例:例:x&=y 等价于等价于 x=x&yx=2 等价于等价于 x=x 4,目的是使要取出的那几位移目的是使要取出的那几位移到最右端到最右端。设置一个低设置一个低4位全为位全为1,其余全为其余全为0的数。的数。即即(0 4)&(0 4)。右移前的情况右移前的情况 右移右移4 4位后的情况位后的情况 29C语言程序设计语言程序设计 温州理工学院温州理工学院 29位运

23、算举例位运算举例例例:取一个整数取一个整数a从右端开始的从右端开始的47位位#include void main()unsigned a,b,c,d;scanf(%o,&a);b=a4;c=(0(m-n+1);c=(0n);即可。即可。30C语言程序设计语言程序设计 温州理工学院温州理工学院 30位运算举例位运算举例循环移位循环移位要求将要求将a进行右循环移位。将进行右循环移位。将a右循环移右循环移n位,即将位,即将a中原来左中原来左面面(16-n)位右移位右移n位,原来右端位,原来右端n位移到最左面位移到最左面n位。位。将将a的右端的右端n位先放到位先放到b中的高中的高n位中,实现语句:位中

24、,实现语句:b=an;将将c与与b进行按位或运算,即进行按位或运算,即 c=c|b;31C语言程序设计语言程序设计 温州理工学院温州理工学院 31位运算举例位运算举例循环移位循环移位输入运行开始时输入八进制数输入运行开始时输入八进制数157653,即二进,即二进制数制数1101111110101011,循环右移,循环右移3位后得二进位后得二进制数制数0111101111110101,即八进制数,即八进制数75765。同样可以左循环位移。同样可以左循环位移。void main()unsigned a,b,c;int n;scanf(a=%o,n=%d,&a,&n);b=an;c=c|b;prin

25、tf(%on%o,a,c);getch();32C语言程序设计语言程序设计 温州理工学院温州理工学院 32位运算位运算概述概述位运算符和位运算位运算符和位运算位运算举例位运算举例位段位段小结小结参考书目及网络资源参考书目及网络资源讨论时间讨论时间33C语言程序设计语言程序设计 温州理工学院温州理工学院 33位段位段信息的存取一般以信息的存取一般以字节字节为单位。实际上,有为单位。实际上,有时存储一个信息不必用一个或多个字节,例时存储一个信息不必用一个或多个字节,例如,如,“真真”或或“假假”用用0或或1表示,只需位表示,只需位即可。即可。在计算机用于过程控制、参数检测或数据通信领在计算机用于过

26、程控制、参数检测或数据通信领域时,控制信息往往只占一个字节中的一个或几域时,控制信息往往只占一个字节中的一个或几个二进制位,常常在一个字节中放几个信息。个二进制位,常常在一个字节中放几个信息。有些信息在存储时,并不需要占用一个完整的字有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如在存放节,而只需占几个或一个二进制位。例如在存放一个开关量时,只有一个开关量时,只有0 和和1 两种状态,用一位二进两种状态,用一位二进位即可。位即可。34C语言程序设计语言程序设计 温州理工学院温州理工学院 34位段位段为了节省存储空间,并使处理简便,为了节省存储空间,并使处理简便,C

27、语言又语言又提供了一种数据结构,称为提供了一种数据结构,称为“位域位域”或或“位位段段”(bit field)。所谓所谓“位域位域”是把一个字节中的二进位划分是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。个字节的二进制位域来表示。35C语言程序设计语言程序设计 温州理工学院温州理工学院 35位域的定义和位域变量的说明位域的定义和位域变量的说明位域定义与结构定义

28、相仿,其形式为:位域定义与结构定义相仿,其形式为:struct 位域结构名位域结构名 位域列表位域列表;其中位域列表的形式为:其中位域列表的形式为:类型说明符类型说明符 位域名位域名:位域长度位域长度位域变量的说明与结构变量说明的方式相同。位域变量的说明与结构变量说明的方式相同。可采用可采用先定义后说明先定义后说明,同时定义说明同时定义说明或者或者直接直接说明说明这三种方式。这三种方式。36C语言程序设计语言程序设计 温州理工学院温州理工学院 36位域的定义和位域变量的说明位域的定义和位域变量的说明struct packed_data unsigned a:2;unsigned b:6;uns

29、igned c:4;unsigned d:4;int i;data;37C语言程序设计语言程序设计 温州理工学院温州理工学院 37位段使用说明位段使用说明一个位域必须存储在同一个字节中,不能跨两个字一个位域必须存储在同一个字节中,不能跨两个字节。如一个字节所剩空间不够存放另一位域时,应节。如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域。也可以有意使某位域从从下一单元起存放该位域。也可以有意使某位域从下一单元开始。下一单元开始。例如:例如:struct bsunsigned a:4unsigned:0/*空域空域*/unsigned b:4/*从下一单元开始存放从下一单元开始存放

30、*/unsigned c:4在这个位域定义中,在这个位域定义中,a 占第一字节的占第一字节的4 位,后位,后4 位填位填0 表示表示不使用,不使用,b 从第二字节开始,占用从第二字节开始,占用4 位,位,c 占用占用4 位。位。38C语言程序设计语言程序设计 温州理工学院温州理工学院 38位段使用说明位段使用说明下例中,下例中,a、b、c之后之后7位空间闲置不用,位空间闲置不用,i从另一字节从另一字节开头起存放开头起存放(如图如图a所示所示)。注意,在存储单元中位段的注意,在存储单元中位段的空间分配方向因机器而异空间分配方向因机器而异。在微机使用的。在微机使用的C系统中,系统中,一般是由右到左

31、进行分配的。见图一般是由右到左进行分配的。见图b。abstruct packed_data unsigned a:2;unsigned b:3;unsigned c:4;int i;data;39C语言程序设计语言程序设计 温州理工学院温州理工学院 39位段使用说明位段使用说明由于位域不允许跨两个字节,因此位域的长度不能大由于位域不允许跨两个字节,因此位域的长度不能大于一个字节的长度,也就是说不能超过于一个字节的长度,也就是说不能超过8 位二进位。位二进位。位域可以无位域名,这时它只用来作填充或调整位置。位域可以无位域名,这时它只用来作填充或调整位置。无名的位域是不能使用的。无名的位域是不能使

32、用的。从以上分析可以看出,位域在本质上就是一种结构类型,从以上分析可以看出,位域在本质上就是一种结构类型,不过其成员是按二进位分配的。不过其成员是按二进位分配的。struct kint a:1int:2/*该该2 位不能使用位不能使用*/int b:3int c:2;40C语言程序设计语言程序设计 温州理工学院温州理工学院 40位段使用说明位段使用说明位段成员的类型必须指定为位段成员的类型必须指定为unsigned或或int类型。一类型。一个位段必须存储在同一存储单元中,不能跨两个单个位段必须存储在同一存储单元中,不能跨两个单元。如果第一个单元空间不能容纳下一个位段,则元。如果第一个单元空间不

33、能容纳下一个位段,则该空间不用,而从下一个单元起存放该位段。该空间不用,而从下一个单元起存放该位段。可以定义无名位段。可以定义无名位段。位段的长度不能大于存储单元的长度,也不能定义位段的长度不能大于存储单元的长度,也不能定义位段数组。位段数组。位段可以用整型格式符输出。位段可以用整型格式符输出。位段可以在数值表达式中引用,它会被系统自动地位段可以在数值表达式中引用,它会被系统自动地转换成整型数。转换成整型数。41C语言程序设计语言程序设计 温州理工学院温州理工学院 41位段使用说明位段使用说明位域的使用位域的使用位域的使用和结构成员的使用相同,其一般形式位域的使用和结构成员的使用相同,其一般形

34、式为为:位域允许用各种格式输出。位域允许用各种格式输出。位域变量名位域变量名.位域名位域名42C语言程序设计语言程序设计 温州理工学院温州理工学院 42位段使用说明位段使用说明main()struct bsunsigned a:1;unsigned b:3;unsigned c:4;bit,*pbit;bit.a=1;bit.b=7;bit.c=15;printf(%d,%d,%dn,bit.a,bit.b,bit.c);pbit=&bit;pbit-a=0;pbit-b&=3;pbit-c|=1;printf(%d,%d,%dn,pbit-a,pbit-b,pbit-c);位域结构位域结构b

35、s,三个位域为,三个位域为a,b,c。说明了。说明了bs类型的变量类型的变量bit和指向和指向bs类型的指针变量类型的指针变量pbit。用指针方式给位域用指针方式给位域a 重新赋值,重新赋值,赋为赋为0。&=,该行相当于:,该行相当于:pbit-b=pbit-b&3,位域位域b中原有值中原有值为为7,与,与3 作按位与运算的结果作按位与运算的结果为为3(111&011=011,十进制值为十进制值为3)。|=,相当于:,相当于:pbit-c=pbit-c|1,其结果为其结果为15。43C语言程序设计语言程序设计 温州理工学院温州理工学院 43位运算位运算概述概述位运算符和位运算位运算符和位运算位

36、运算举例位运算举例位段位段小结小结参考书目及网络资源参考书目及网络资源讨论时间讨论时间44C语言程序设计语言程序设计 温州理工学院温州理工学院 44本章小结本章小结位运算是位运算是C语言的一种特殊运算功能,它以二语言的一种特殊运算功能,它以二进制位为单位进行运算的。位运算符只有逻辑进制位为单位进行运算的。位运算符只有逻辑运算和移位运算两类。位运算符可以与赋值符运算和移位运算两类。位运算符可以与赋值符一起组成复合赋值符。如一起组成复合赋值符。如&=,|=,=,=,=等。等。利用位运算可以完成汇编语言的某些功能,如利用位运算可以完成汇编语言的某些功能,如置位,位清零,移位等。还可进行数据的压缩置位

37、,位清零,移位等。还可进行数据的压缩存储和并行运算。存储和并行运算。位域在本质上也是结构类型,不过它的成员按位域在本质上也是结构类型,不过它的成员按二进制位分配内存。其定义、说明及使用的方二进制位分配内存。其定义、说明及使用的方式都与结构相同。式都与结构相同。45C语言程序设计语言程序设计 温州理工学院温州理工学院 45本章小结本章小结位域提供了一种手段,使得可在高级语言中实位域提供了一种手段,使得可在高级语言中实现数据的压缩,节省了存储空间,同时也提高现数据的压缩,节省了存储空间,同时也提高了程序的效率。了程序的效率。46C语言程序设计语言程序设计 温州理工学院温州理工学院 46网络资源网络

38、资源http:/(教学站点教学站点)http:/cpp.ga- 温州理工学院温州理工学院 47Questions-Discussion48C语言程序设计语言程序设计 温州理工学院温州理工学院 48作业提交作业提交作业提交作业提交实验报告提交实验报告提交ftp:/10.172.250.252:116149C语言程序设计语言程序设计 温州理工学院温州理工学院 49再再 见见376458575Algorithms+Data Structures=ProgramsCopyright 2021 Wenzhou University of Technology.All rights reserved.Th

39、is presentation,slides,or hardcopy may NOT be used for short courses,industry seminars,or consulting purposes.The names of actual companies and products mentioned herein may be the trademarks of their respective owners.This presentation is for informational purposes only.C语言程序设计语言程序设计 The C Programming Language

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁