c语言程序设计第十二章位运算

c语言程序设计第十二章位运算

ID:5582124

大小:1.54 MB

页数:33页

时间:2017-11-13

c语言程序设计第十二章位运算_第1页
c语言程序设计第十二章位运算_第2页
c语言程序设计第十二章位运算_第3页
c语言程序设计第十二章位运算_第4页
c语言程序设计第十二章位运算_第5页
资源描述:

《c语言程序设计第十二章位运算》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C语言程序设计第十二章位运算主要内容12.1位运算的概念12.2位运算12.3位运算举例12.4位段212.1位运算的概念C语言是为描述系统而设计的,既具有高级语言的特点,又具有低级语言的功能,因而具有广泛的用途和很强的生命力。在计算机用于检测和控制等诸多领域中要用到位运算的知识,因此读者应当学习和掌握本章的内容。所谓位运算是指进行二进制位运算。例如,将一个存储单元中的各二进位左移或右移一位,两个数按位相加等。本章讲述C语言位运算的功能。312.1位运算的概念计算机内数据的表示方法计算机内存储器由许多称为字节的单元组成的,每个字节由8个二进制位(8bit)

2、构成,每位的取值为0或1。最右端的位称为“最低位”,编号为0;最左端的位称为“最高位”,而且按从最低位到最高位顺序,依次编号。下图是一个字节数据和它各二进制位的编号。计算机中数是用二进制来表示的,数的符号也是用二进制表示的。一般用最高位作为符号位,0表示正数,用1表示负数。位号76543210各位数据10110010一个字节数据和它各位编号412.1位运算的概念补码正数表示形式:符号位为0,其余部分表示数的绝对值。例如,+9的补码是00001001512.1位运算的概念负数表示形式:-9的绝对值按位取反后加1,符号位以1表示负数。由于计算机的字长不同,为方

3、便描述,因此约定用一个字节表示一个整数。见下图:612.1位运算的概念位运算及其运算符所谓位运算是指,按二进制位进行的运算,即从具有0或1的运算对象出发,计算得出具有0或1的运算结果。C语言的位运算又分为按位操作和移位操作,位操作包括按位与、或、异或和求反运算;移位操作包括左移和右移操作712.1位运算的概念说明位运算的优先级:由高到低的顺序是:~→<<、>>→&→

4、→^;位运算的运算对象只能是整型(int)或字符型(char)的数据;位运算是对运算量的每一个二进制位分别进行;812.2位运算按位与运算(&)参加运算的两个数据,按二进位进行“与”运算。如果

5、两个相应的二进位都为1,则该位的结果值为1,否则为0。即0&0=0;0&1=0;1&0=0;1&1=1;例如:3&5并不等于8,应该是按位与。3=00000011&5=000001011=00000001因此,3&5的值得1。如果参加&运算的是负数(如-3&-5),则以补码形式表示为二进制数,然后按位进行“与”运算。912.2位运算按位与的实际用途将一个数的某位清零如果想将某个数的某个比特清零,只要另找一个数,让对应的该比特置0,然后使两数进行按位与&运算,即可达到将此数的特定比特清零的目的。如:有数为00101011,想让该数从右数的第4比特变成0,其他

6、位保持不变。我们另找一个数,该数从右数的第4比特设它为0,其他位全为1:11110111,将两个数进行&运算:00101011&11110111001000111012.2位运算取一个数中某些指定位如有一个两个字节整数a=(16a1)16,想取出其中的低字节。我们构造一个数b,它的高字节全为0,低字节全为1,即b=(00ff)16=(255)10,只需将a与b按位与即可:a=(16a1)16=(0001011010100001)2&b=(00ff)16=(0000000011111111)2(00a1)16=(0000000010100001)21112.

7、2位运算按位或运算(

8、)两个相应的二进位中只要有一个为1,该位的结果值为1。即0

9、0=0;0

10、1=1;1

11、0=1;1

12、1=1。例如:(060)8

13、(017)8,将八进制数60与八进制数17进行按位或运算:(060)8=(00110000)2

14、(017)8=(00001111)2(077)8=(00111111)2按位或常用来对一个数据的某些位定值为1。如:a是一个整数(16位),有表达式a

15、0377,0377为8进制数。则低8位全置为1。高8位保留原样。1212.2位运算异或运算(∧)异或运算符∧也称XOR运算符。它的规则是若参加运算的两个二进位相同,则结

16、果为0;相异则为1(真):0∧0=0;0∧1=1;1∧0=1;1∧1=0;如:00111001(十进制数57,八进制数071)∧00101010(十进制数42,八进制数052)00010011(十进制数19,八进制数023)即071∧052,结果为023(八进制数)。1312.2位运算异或运算应用使特定位翻转:假设有01111010,想使其低4位翻转,即1变为0,0变为1。可以将它与00001111进行∧运算,即01111010∧0000111101110101要使哪几位翻转就将与其进行∧运算的该几位置为1即可。与0相∧,保留原值。如012∧00=0120

17、0001010∧0000000000001010因为原数中的1与0

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。