欢迎来到天天文库
浏览记录
ID:40259477
大小:177.50 KB
页数:16页
时间:2019-07-29
《第09章 位运算》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第九章位运算9.1位运算的概念9.2位运算9.3位段简介C语言具有汇编语言所能完成的一些功能,这是C语言的重要特色。在计算机用于检测控制领域中要用到位运算,因此要学习和掌握本章内容。9.1位运算的概念位运算——进行二进制位的运算。C语言提供的位运算符如下表。运算符含义&按位与
2、按位或^按位异或~(一目运算符)按位取反<<左移运算符>>右移运算符第十二章位运算说明:⑴位运算符中除了~以外,均为二目(元)运算符,即要求两侧各有一个运算量。⑵运算量只能是整型或字符型数据,不能为实型数据。9.2.1“按位与”运算符(&)参与运算的两个数据,按二进制位进行“与
3、”运算。⑴运算规则:相应位都为1时,该位相与的结果为1,否则为0,即0&0=01&0=00&1=01&1=1例如:3&53=00000011&5=0000010100000001值为1例如:(-3)&(-5)——先用补码表示,然后运算。(-3)=11111101&(-5)=11111011111110019.2位运算⑵用途:①清零:用0去“与”某一位,使该位清零。如想将一个单元清零,即使其全部二进制位为0,只要找一个二进制数,其中各个位符合以下条件:原来数中为1的位,新数中相应位为0,然后使二者进行&运算即可。例如:使低4位为011011001&11
4、11000011010000低4位为0②保留一个数中的某些位。用1去“与”某一位,保留该位。如:保留低4位10101100&0000111100001100保留低4位③保留其中某些位,将它与这些位为1的数作“与”运算。例如:有一数01010100,想保留其左起的第3、4、5、7、8位,01010100&0011101100010000计算机中的控制字各个位表示某些设备的状态,状态发生变化,各个位通过位运算改变数值。9.2.2按位或运算符(
5、)——两个数的相应位按位或(1)运算规则:相应位只要有一个为1,该位相或的结果就为1,否则为0,即0
6、0=01
7、
8、0=10
9、1=11
10、1=1例如:11011001
11、0000111111011111(2)用途:①用1去与某些位“或”,使某些位为1。例如:11011001
12、0000111111011111低4位为1②用0去与某些位“或”,保留原位。例如:上例中前4位保留原位9.2.3按位异或运算符(^)——两个数的相应位按位异或异或——判断两个相应的位值是否为"异","异"则结果为1,否则为0⑴运算规则:相应位的位值不同时(相异),作或的运算。即0^0=01^0=10^1=11^1=0例如:11011001^0000111111010110⑵用途:①用1去与某些位“
13、异或”,使特定位翻转。01111010^0000111101110101②用0去与某些位异或,保留原值。如上例中前4位用0去异或,保留原值0111③交换两个值,不用临时变量。例如:a=a^b;b=b^a;a=a^b;假设a=011,b=100.请验证上述式子。b=b^(a^b)=b^a^b=a^b^b=aa=(a^b)^a=a^b^a=b^a^a=b对一个二进制数按位取反(0→1,1→0)。例如:~0001100111100110又如:若一个整数a为16位,要使a最低一位为0,可以用a=a&0177776;(常量与a的字长有关)八进制数177776即
14、二进制数1111111111111110,适于16位计算机系统,对于32位计算机系统,常量则应该用037777777776(八进制),这样改动移植性差。最好是用表达式:a=a&~1;(与a的字长无关)其中:~1=~(0000000000000001)=1111111111111110或a=a&(a-1);若a=00011011&a-1=00011010000110109.2.4按位“取反”运算符(~)~运算符的优先级别比算术运算符、关系运算符、逻辑运算符和其它位运算符都高。将一个二进制数的各位全部左移若干位,右端空位补0,高位左移后溢出,舍去不起作用
15、。例如:a=a<<2;(左移二位)若a=15,a二进制数为00001111a左移2位为00111100其值为60。左移2位相当于乘以22=4,但此结论只适用于左移时被溢出舍弃的高位中不包含1的情况。(见下表)a的值a的二进制形式a<<1a<<264010000000100000000100000000127011111110111111100111111100左移比乘法运算速度快得多,有些C编译程序自动将乘2的运算用左移一位来实现,将乘2n的幂运算处理为左移n位。9.2.5<<(左移运算符)9.2.7位运算赋值运算位运算符与赋值运算符可以组合成复合赋
16、值运算符——位运算赋值运算符。如:&=,
17、=,^=,>>=,<<=。例如:a&=b相当于a=a&b,a>>=
此文档下载收益归作者所有